[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