On Sun, 2008-02-03 at 01:47 +0000, Simos Xenitellis wrote: > On Sat, 2008-02-02 at 14:57 +0200, Kostas Papadimas wrote: > > Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey > > έγραψε: > > > http://www.techteam.gr/index.php?showtopic=118719 > > > > > > > Δεν καταλαβαίνω. > > 1)Αν όντως υπάρχει πρόβλημα ΠΟΥ ΕΙΝΑΙ ΤΟ ΕΠΙΣΗΜΟ ΒUG REPORT? > > 2)OK το να προτείνει κάποιος script είναι θεμιτό, αλλά ποιός αφελής > > χρήστης εκτελεί αυτά scripts? > > > > Αν και οι προθέσεις αυτού του χρήστη είναι αγνές, το γεγονός ότι δεν > > έχει υποβάλλει bug report (η δεν έχει link σε αυτό αν υπάρχει ήδη) είναι > > επιεικώς ανήθικο .. > > > > Τι κάνει πραγματικά ο Ναυτίλος όταν επιλέγουμε αποπροσάρτηση ή εξαγωγή; > > Ο πηγαίος κώδικας του Ναυτίλου βρίκεται στο > http://svn.gnome.org/viewvc/nautilus/trunk/ > > Πως εντοπίζουμε που πρέπει να κοιτάξουμε μέσα σε τόσο πηγαίο κώδικα; > Ξεκινούμε από το μήνυμα που εμφανίζεται κατά την αποπροσάρτηση. Σε > αγγλικό GNOME είναι "_Unmount Volume" ενώ σε ελληνικό είναι > "Αποπρο_σάρτηση τόμου" (ο επόμενος χαρακτήτας μετά το _ είναι ο > χαρακτήτας συντόμευσης). > Εντοπίζουμε την ελληνική μετάφραση μέσα στον πηγαίο κώδικα· είναι στον > υποκατάλογο po/, αρχείο el.po. > Δηλαδή, > http://svn.gnome.org/viewvc/nautilus/trunk/po/el.po?view=annotate > Είναι στη σειρά 3618. Βλέπουμε και ότι το συγκεκριμένο μήνυμα το > μετέφρασε ο Νίκος Χαρωνιτάκης. > Στα σχόλια του μηνύματος αναφέρει > #: ../src/file-manager/fm-directory-view.c:6266 3615 > #: ../src/file-manager/fm-directory-view.c:6282 3616 > #: ../src/file-manager/fm-tree-view.c:753 > > Δηλαδή μπορούμε να προχωρήσουμε στα αρχεία αυτά (+γραμμή) να δούμε τι > ακριβώς γίνεται. Η απάντηση βρίσκεται στο fm-tree-view.c, > http://svn.gnome.org/viewvc/nautilus/trunk/src/file-manager/fm-tree-view.c?view=annotate > > Στη γραμμή 753 λέει > > gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_MENU_ITEM > (view->details->popup_unmount))->child), unmount_is_eject? > _("E_ject"):_("_Unmount Volume")); > > Ίσως είναι ακαταλαβίστικο, η ουσία βρίσκεται στο > unmount_is_eject? _("E_ject"):_("_Unmount Volume") > > που είναι κάπως ισοδύναμο με > > if (unmount_is_eject) > return _("E_ject") > else > return _("_Unmount Volume") > > Δηλαδή το αν θα κάνει αποπροσάρτητη ή εξαγωγή το καθορίζει η μεταβλητή > unmount_is_eject. Η μεταβλητή αυτή παίρνει τιμή στις παραπάνω γραμμές: > > [747] show_unmount = g_mount_can_unmount (mount) || g_mount_can_eject > (mount); > /* TODO: show both unmount and eject if there are more than one > volume for the drive */ > unmount_is_eject = g_mount_can_eject (mount); > > Δηλαδή αν θα εμφανίζεται η επιλογή "Αποπροσάρτηση τόμου" γίνεται με > έλεγχο αν οι συσκευές έχουν νόημα για αποπροσάρτηση. Τώρα, αν η > αποπροσάρτηση θα έχει την έννοια της εξαγωγής (δηλαδή ο χρήστης βλέπει > πάντα Αποπροσάρτηση, αλλά στις κατάλληλες φορές η αποπροσάρτηση θα είναι > η λειτουργία της Εξαγωγής), το καθορίζει η συνάρτηση > g_mount_can_eject(). > > Οι συναρτήσεις με όνομα g_xxxxxxx() προέρχονται από τη βιβλιοθήκη GLib, > http://svn.gnome.org/viewvc/glib/trunk/ > και η συγκεκριμένη συνάρτηση προέρχεται από το αρχείο > http://svn.gnome.org/viewvc/glib/trunk/gio/gmount.c?view=annotate > Θα αφήσουμε για τώρα τον τρόπο καθορισμού για το αν κάποια συσκευή > μπορεί να αποπροσαρτηστεί ή όχι. Όπως ειναι τώρα, δεν υπάρχει ένδειξη > στον τελικό χρήστη αν θα γίνει εξαγωγή ή σκέτη αποπροσάρτηση. > > Κοιτώντας στο αρχικό αρχείο για την εντολή που κάνει πραγματικά την > αποπροσάρτηση/εξαγωγή, βλέπουμε ότι είναι η > nautilus_file_operations_unmount_mount(). > Που θα βρούμε την εντολή αυτή σε όλο τον κώδικα του Ναυτίλου; > Δοκιμάζουμε με Google και βρίσκουμε > http://mail.gnome.org/archives/svn-commits-list/2008-January/msg04806.html > > Εδώ γίνονται μια σειρά από βήματα αναζήτησης που οδηγούν τελικά στο > αρχείο > http://svn.gnome.org/viewvc/glib/trunk/gio/gunixvolume.c?view=annotate > και στη γραμμή 417, > > [417] char *argv[] = {"eject", NULL, NULL}; > argv[1] = unix_volume->device_path; > > Δηλαδή το σύστημα καλεί την εντολή "eject" με παράμετρο τη συσκευή που > θέλουμε να αποπροσαρτήσουμε. > > Αν θέλουμε να δοκιμάσουμε με την εντολή sdparm, αρκεί να > αντικαταστήσουμε με > > [417] char *argv[] = {"sdparm", "--command=stop", NULL, NULL}; > argv[2] = unix_volume->device_path; > > Η εντολή sdparm λειτουργεί για όλες της συσκευές; > Θα ήταν καλύτερη να έχουμε "unmount", "eject" αλλά και "poweroff"; > > Είναι καλό να γίνει αναφορά σφάλματος στο Bugzilla του GNOME, στο έργο > glib, συστατικό gio : http://bugzilla.gnome.org/browse.cgi?product=glib > Θέλει να το αναλάβει κάποιος; >
Έστειλα γράμμα στη λίστα desktop-devel-list (gnome), http://mail.gnome.org/archives/desktop-devel-list/2008-February/thread.html#00015 Υπάρχει η σελίδα http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks για το spindown εξωτερικών δίσκών. Όπως καταλαβαίνω, κάποιες συσκευές δουλεύουν ενώ άλλες δεν δουλεύουν. Αν κάποιος έχει ενδιαφέρον να δοκιμάσω, ας πει αν μπορεί με τις εντολές sg_start/sdparm είναι σε θέση να σταματήσει εξωτερικούς σκληρούς δίσκους ή συσκευές φλας. σίμος Σίμος -- Ubuntu-gr mailing list Ubuntu-gr@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr