| 118 |
} |
} |
| 119 |
} |
} |
| 120 |
|
|
| 121 |
void insert_or_update_drive(gchar *Adev, gchar *Amarque, gchar *Amodel, gchar *Aquoi, Tsearchdrive *Adrivedesc) |
void matos_insert_or_update_drive(gchar *Adev, gchar *Amarque, gchar *Amodel, gchar *Aquoi, Tsearchdrive *Adrivedesc) |
| 122 |
{ |
{ |
| 123 |
/* on commence par construire l'identifiant */ |
/* on commence par construire l'identifiant */ |
| 124 |
gchar *Lident = g_strdup_printf("%s %s %s", Amarque, Amodel, Aquoi); |
gchar *Lident = g_strdup_printf("%s %s %s", Amarque, Amodel, Aquoi); |
| 764 |
|
|
| 765 |
/* try to umount device when it's mounted |
/* try to umount device when it's mounted |
| 766 |
* scan /etc/ftab file to do this */ |
* scan /etc/ftab file to do this */ |
| 767 |
gboolean umount_device(Tdriveinfo *Adevice, Tgrave *Ag) |
gboolean matos_umount_device(Tdriveinfo *Adrive, GError **Aerror) |
| 768 |
{ |
{ |
| 769 |
|
gchar *Lcontent = NULL; |
| 770 |
|
gint i; |
| 771 |
|
gchar **Larrbuf, *Lcur, *s, *Lcurdev = NULL; |
| 772 |
|
gchar Lcommand[_BUF_SIZE]; |
| 773 |
|
GSList *Llistdev; |
| 774 |
|
gboolean Lfind = FALSE, Lstatus = FALSE; |
| 775 |
|
|
| 776 |
|
if (!g_file_get_contents("/etc/mtab", &Lcontent, NULL, Aerror) || !Lcontent) return FALSE; |
| 777 |
|
Larrbuf = g_strsplit(Lcontent, "\n", 0); |
| 778 |
|
|
| 779 |
|
for (i=0; Larrbuf[i] && !Lfind; i++) { |
| 780 |
|
s = Lcur = Larrbuf[i]; |
| 781 |
|
if (!*Lcur) continue; |
| 782 |
|
|
| 783 |
|
_DEB("deb => [%s]", Lcur); |
| 784 |
|
|
| 785 |
|
while (g_ascii_isalnum(*s) || *s=='/') s++; |
| 786 |
|
*s=0; |
| 787 |
|
if ((s=strchr(Lcur, '='))) Lcur=s+1; |
| 788 |
|
|
| 789 |
|
for (Llistdev = Adrive->dev; Llistdev; Llistdev = g_slist_next(Llistdev)) { |
| 790 |
|
Lcurdev = (gchar *) Llistdev->data; |
| 791 |
|
_DEB("comp de [%s] et [%s]", Lcurdev,Lcur); |
| 792 |
|
if (!strcmp(Lcurdev, Lcur)) { |
| 793 |
|
Lfind = TRUE; |
| 794 |
|
break; |
| 795 |
|
} |
| 796 |
|
} |
| 797 |
|
} |
| 798 |
|
|
| 799 |
|
if (Lfind && Lcurdev) { |
| 800 |
|
g_snprintf(Lcommand, sizeof(Lcommand)-1, "/sbin/umount %s", Lcurdev); |
| 801 |
|
|
| 802 |
|
_DEB("try to umount [%s]", Lcommand); |
| 803 |
|
|
| 804 |
|
Lstatus = g_spawn_command_line_async(Lcommand, Aerror); |
| 805 |
|
} |
| 806 |
|
|
| 807 |
|
g_strfreev(Larrbuf); |
| 808 |
|
g_free(Lcontent); |
| 809 |
|
|
| 810 |
|
return Lstatus; |
| 811 |
|
} |
| 812 |
|
|
| 813 |
|
gboolean matos_maj_drive_info(Tdriveinfo *Adrive, gchar *Adev, GError **Aerror) |
| 814 |
|
{ |
| 815 |
|
Adrive->type = 0; |
| 816 |
|
|
| 817 |
|
cdrecord_maj_drive_info(Adrive, Adev, Aerror); |
| 818 |
|
|
| 819 |
|
/* use /proc/sys/dev/cdrom/info with linux to find DVD capability */ |
| 820 |
|
proc_maj_drive_info(Adrive, Aerror); |
| 821 |
|
|
| 822 |
|
return TRUE; |
| 823 |
} |
} |
| 824 |
|
|
| 825 |
/* |
/* |