[Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community
Simos Xenitellis
simos.lists at googlemail.com
Mon Feb 4 16:44:24 GMT 2008
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 είναι σε θέση
να σταματήσει εξωτερικούς σκληρούς δίσκους ή συσκευές φλας.
σίμος
Σίμος
More information about the Ubuntu-gr
mailing list