diff options
Diffstat (limited to 'ide.c')
-rw-r--r-- | ide.c | 94 |
1 files changed, 46 insertions, 48 deletions
@@ -1,3 +1,4 @@ + /* * Hardware Information, version 0.3 * Copyright (C) 2003 Leandro Pereira <leandro@linuxmag.com.br> @@ -15,7 +16,7 @@ IDEDevice *hi_scan_ide(void) { FILE *proc_ide; gchar *device, iface; - gint n=0, i=0; + gint n = 0, i = 0; struct stat st; IDEDevice *ide_dev, *ide; @@ -59,9 +60,34 @@ IDEDevice *hi_scan_ide(void) ide_dev->cache = atoi(buf); } + g_free(device); + + device = g_strdup_printf("/proc/ide/hd%c/geometry", iface); + if (!stat(device, &st)) { + gchar *tmp; + + proc_ide = fopen(device, "r"); + + fgets(buf, 64, proc_ide); + for (tmp = buf; *tmp; tmp++) { + if (*tmp >= '0' && *tmp <= '9') break; + } + + ide_dev->phy_geometry = g_strdup(g_strstrip(tmp)); + + fgets(buf, 64, proc_ide); + for (tmp = buf; *tmp; tmp++) { + if (*tmp >= '0' && *tmp <= '9') break; + } + ide_dev->log_geometry = g_strdup(g_strstrip(tmp)); + + fclose(proc_ide); + } + g_free(device); + n++; - } - g_free(device); + } else + g_free(device); } return ide; @@ -69,7 +95,6 @@ IDEDevice *hi_scan_ide(void) void hi_show_ide_info(MainWindow *mainwindow, IDEDevice *device) { - GtkWidget *hbox, *vbox, *label; static struct { char *type; char *label; @@ -80,9 +105,6 @@ void hi_show_ide_info(MainWindow *mainwindow, IDEDevice *device) }; int i; gchar *buf; -#ifdef GTK2 - GtkWidget *pixmap; -#endif if(!device) return; @@ -90,53 +112,29 @@ void hi_show_ide_info(MainWindow *mainwindow, IDEDevice *device) if (!strcmp(device->media, type2icon[i].type)) break; } -#ifdef GTK2 buf = g_strdup_printf("%s%s", IMG_PREFIX, type2icon[i].icon); - pixmap = gtk_image_new_from_file(buf); - gtk_widget_show(pixmap); - - g_free(buf); -#endif - hbox = gtk_hbox_new(FALSE, 2); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 4); - gtk_widget_show(hbox); - - if(mainwindow->framec) - gtk_widget_destroy(mainwindow->framec); - - gtk_container_add(GTK_CONTAINER(mainwindow->frame), hbox); - mainwindow->framec = hbox; + detail_window_set_icon(mainwindow->det_window, buf); + g_free(buf); buf = g_strdup_printf(_("ATA/IDE %s Device"), type2icon[i].label); - gtk_frame_set_label(GTK_FRAME(mainwindow->frame), buf); + gtk_window_set_title(GTK_WINDOW(mainwindow->det_window->window), buf); + detail_window_set_dev_type(mainwindow->det_window, buf); g_free(buf); - -#ifdef GTK2 - gtk_box_pack_start(GTK_BOX(hbox), pixmap, FALSE, FALSE, 0); -#endif - - vbox = gtk_vbox_new(FALSE, 2); - gtk_widget_show(vbox); - gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); -#ifdef GTK2 - buf = g_strdup_printf("<b>%s</b>", device->model); - label = gtk_label_new(buf); - gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - gtk_label_set_selectable(GTK_LABEL(label), TRUE); + detail_window_set_dev_name(mainwindow->det_window, device->model); - g_free(buf); -#else - label = gtk_label_new(device->model); -#endif - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); - if (device->cache) { - buf = g_strdup_printf(_("Cache: %d KB"), device->cache); - label = gtk_label_new(buf); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); - g_free(buf); + detail_window_append_info_int(mainwindow->det_window, _("Cache (kb)"), + device->cache, FALSE); + } + + if (device->phy_geometry) { + detail_window_append_info(mainwindow->det_window, _("Physical geometry"), + device->phy_geometry); + } + if (device->log_geometry) { + detail_window_append_info(mainwindow->det_window, _("Logical geometry"), + device->log_geometry); } + } |