+typedef struct {
+ struct list_t *cap, *dev;
+ const char label[8], symlink[8];
+ const char *captext;
+ int captextlen;
+} cap_dev_t;
+
+#define CAPDEV(X) &cap_##X, &dev_##X
+
+static const cap_dev_t cap_dev_info[] = {
+ { NULL, &dev_CD, "CD", "cdrom", NULL, 0 },
+ { CAPDEV(CDR), "CDR", "cd-r", "Can write CD-R:", 15 },
+ { CAPDEV(CDRW), "CDRW", "cdrw", "Can write CD-RW:", 16 },
+ { CAPDEV(DVD), "DVD", "dvd", "Can read DVD:", 13 },
+ { CAPDEV(DVDRW), "DVDRW", "dvdrw", "Can write DVD-R:", 16 },
+ { CAPDEV(DVDRAM), "DVDRAM", "dvdram", "Can write DVD-RAM:", 18 },
+ { CAPDEV(CDMRW), "CDMRW", "cdm", "Can read MRW:", 13 }, /* CDC-MRW R */
+ { CAPDEV(CDWMRW), "CDWMRW", "cdmrw", "Can write MRW:", 14 }, /* CDC-MRW W */
+ { CAPDEV(CDRAM), "CDRAM", "cdram", "Can write RAM:", 14 }, /* CDC-RAM W */
+ { NULL }
+};
+
+#define foreach_cap_dev(loop) \
+ for ((loop) = cap_dev_info; (loop)->label[0]; ++(loop))
+#define foreach_cap_dev_noCD(loop) \
+ for ((loop) = cap_dev_info + 1; (loop)->label[0]; ++(loop))