43
44
if (!g_file_test("/proc/scsi/scsi", G_FILE_TEST_EXISTS))
46
storage_list = g_strconcat(storage_list, "\n[SCSI Disks]\n", NULL);
47
scsi_storage_list = g_strdup("\n[SCSI Disks]\n");
48
49
proc_scsi = fopen("/proc/scsi/scsi", "r");
49
50
while (fgets(buffer, 256, proc_scsi)) {
57
58
} else if (!strncmp(buf, "Vendor: ", 8)) {
59
char *rev = strstr(buf, "Rev: ");
61
model = strstr(buf, "Model: ");
64
model = buf + strlen(buf);
67
while (*(--p) == ' ');
69
vendor = g_strdup(buf + 8);
72
revision = g_strdup(rev + 5);
74
rev = model + strlen(model);
77
while (*(--p) == ' ');
79
model = g_strdup_printf("%s %s", vendor, model + 7);
63
vendor = g_strdup(g_strstrip(buf + 8));
64
model = g_strdup_printf("%s %s", vendor, g_strstrip(buf + 24));
65
revision = g_strdup(g_strstrip(buf + 46));
81
66
} else if (!strncmp(buf, "Type: ", 8)) {
83
68
gchar *type = NULL, *icon = NULL;
98
83
{ "Direct-Access", "Disk", "hdd"},
99
84
{ "Sequential-Access", "Tape", "tape"},
100
85
{ "Printer", "Printer", "lpr"},
101
{ "WORM", "CD-ROM", "cd"},
102
{ "CD-ROM", "CD-ROM", "cd"},
86
{ "WORM", "CD-ROM", "cdrom"},
87
{ "CD-ROM", "CD-ROM", "cdrom"},
103
88
{ "Scanner", "Scanner", "scanner"},
89
{ "Flash Disk", "USB Flash Disk", "usbfldisk" },
104
90
{ NULL, "Generic", "scsi"}
108
for (i = 0; type2icon[i].type != NULL; i++)
109
if (g_str_equal(buf + 8, type2icon[i].type))
112
type = type2icon[i].label;
113
icon = type2icon[i].icon;
94
if (strstr(model, "Flash Disk")) {
98
for (i = 0; type2icon[i].type != NULL; i++)
99
if (g_str_equal(buf + 8, type2icon[i].type))
102
type = type2icon[i].label;
103
icon = type2icon[i].icon;
116
107
gchar *devid = g_strdup_printf("SCSI%d", n);
117
storage_list = h_strdup_cprintf("$%s$%s=\n", storage_list, devid, model);
108
scsi_storage_list = h_strdup_cprintf("$%s$%s=\n", scsi_storage_list, devid, model);
118
109
storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, model, icon);
120
111
gchar *strhash = g_strdup_printf("[Device Information]\n"
125
"[SCSI Controller]\n"
126
"Controller=scsi%d\n"
128
"ID=%d\n" "LUN=%d\n",
130
vendor_get_name(model),
131
vendor_get_url(model),
112
"Model=%s\n", model);
114
const gchar *url = vendor_get_url(model);
116
strhash = h_strdup_cprintf("Vendor=%s (%s)\n",
118
vendor_get_name(model),
121
strhash = h_strdup_cprintf("Vendor=%s\n",
123
vendor_get_name(model));
126
strhash = h_strdup_cprintf("Type=%s\n"
128
"[SCSI Controller]\n"
129
"Controller=scsi%d\n"
131
"ID=%d\n" "LUN=%d\n",
138
139
g_hash_table_insert(moreinfo, devid, strhash);
158
164
gchar *device, iface, *model, *media, *pgeometry = NULL, *lgeometry =
160
166
gint n = 0, i = 0, cache, nn = 0;
161
gchar *capab = NULL, *speed = NULL, *driver = NULL;
167
gchar *capab = NULL, *speed = NULL, *driver = NULL, *ide_storage_list;
163
169
/* remove old devices from global device table */
164
170
g_hash_table_foreach_remove(moreinfo, remove_ide_devices, NULL);
166
storage_list = g_strconcat(storage_list, "\n[IDE Disks]\n", NULL);
172
ide_storage_list = g_strdup("\n[IDE Disks]\n");
169
175
for (i = 0; i <= 16; i++) {
286
292
gchar *devid = g_strdup_printf("IDE%d", n);
288
storage_list = h_strdup_cprintf("$%s$%s=\n", storage_list,
294
ide_storage_list = h_strdup_cprintf("$%s$%s=\n", ide_storage_list,
290
296
storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid,
291
297
model, g_str_equal(media, "cdrom") ? \
292
298
"cdrom" : "hdd");
294
300
gchar *strhash = g_strdup_printf("[Device Information]\n"
301
vendor_get_name(model),
302
vendor_get_url(model),
304
const gchar *url = vendor_get_url(model);
307
strhash = h_strdup_cprintf("Vendor=%s (%s)\n",
309
vendor_get_name(model),
312
strhash = h_strdup_cprintf("Vendor=%s\n",
314
vendor_get_name(model));
317
strhash = h_strdup_cprintf("Device Name=hd%c\n"
307
325
strhash = h_strdup_cprintf("%s\n", strhash, driver);