[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Graveman-cvs] Changes to graveman/current/src/cdrdao.c
From: |
sylvain cresto |
Subject: |
[Graveman-cvs] Changes to graveman/current/src/cdrdao.c |
Date: |
Sun, 27 Mar 2005 18:51:27 -0500 |
Index: graveman/current/src/cdrdao.c
diff -u graveman/current/src/cdrdao.c:1.8 graveman/current/src/cdrdao.c:1.9
--- graveman/current/src/cdrdao.c:1.8 Tue Mar 22 00:27:13 2005
+++ graveman/current/src/cdrdao.c Sun Mar 27 23:51:07 2005
@@ -106,7 +106,7 @@
*Lbuffer = 0;
Lstatus = g_io_channel_read_chars(Astd, Lbuffer, _BUF_SIZE-1, &Llu, NULL);
if (!*Lbuffer || Lstatus == G_IO_STATUS_ERROR || Lstatus ==
G_IO_STATUS_AGAIN) {
- return FALSE;
+ return TRUE;
}
Lbuffer[Llu]=0;
_DEB("===>%s", Lbuffer);
@@ -329,6 +329,10 @@
if (Lcurcd > 1 && !Ldosimul) {
/* copie sur un nouveau cd, on demande a l'utilisateur d'inserer le
* nouveau cd vierge */
+ GSList *Llmediarequis = g_slist_append(NULL, GINT_TO_POINTER(_MEDIA_CDR
+ _MEDIA_APPENDABLE));
+ gboolean Lstatus;
+ Llmediarequis = g_slist_append(Llmediarequis,
GINT_TO_POINTER(_MEDIA_CDRW + _MEDIA_APPENDABLE));
+
/* gint Lrep;
GtkWidget *Lconfirm = gtk_message_dialog_new(Lwindow,
GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION,
@@ -337,12 +341,14 @@
Lrep = gtk_dialog_run(GTK_DIALOG(Lconfirm));
gtk_widget_destroy(Lconfirm);
if (Lrep == GTK_RESPONSE_NO) {*/
- if (waiting_for_user("", Ag, _MEDIA_CDR + _MEDIA_APPENDABLE ,
&Lmediadetect1, Lbufgrav)==FALSE) {
+ Lstatus = waiting_for_user(_MEDIA_BLANKORAPPENDABLE, Ag, Llmediarequis,
&Lmediadetect1, Lbufgrav);
+ g_slist_free(Llmediarequis);
+
+ if (Lstatus==FALSE) {
/* si c'est non alors on arrete */
*Labort = TRUE;
Lstatus = TRUE;
}
-
}
/* Lbuftitle = get_title(Lnbrgravure, Lcurcd, Ldosimul);
@@ -465,26 +471,60 @@
/* retourne les infos sur le media inseré dans le lecteur */
-gint get_cdinfo(gchar *Adevice, GError **Aerror)
+gint get_cdinfo(Tgrave *Ag, gchar *Adevice, GError **Aerror)
{
gchar Lcommandline[_BUF_SIZE];
gboolean Lstatus;
- gint Lexit = 0;
- gchar *Lout = NULL, *Lerr = NULL;
gchar **Larrbuf;
+ gchar **Lcmd;
gint i;
gint Llu = _MEDIA_NONE;
+ gint g_err, g_out, Lnbrarg;
+ GIOChannel *Lcom;
+ guint Lcomevent;
+ gint Lloccont = 2;
+ gint *Lpid = (gint *)sc_grave_get_data(Ag, "pid");
+ GString *Loutput;
g_snprintf(Lcommandline, sizeof(Lcommandline)-1, "%s disk-info --device %s",
conf_get_string("cdrdao"), Adevice);
+ if (!g_shell_parse_argv(Lcommandline, &Lnbrarg, &Lcmd, Aerror)) return 0;
+
- Lstatus = g_spawn_command_line_sync(Lcommandline, &Lout, &Lerr, &Lexit,
Aerror);
+ Lstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, (GSpawnFlags)
(G_SPAWN_DO_NOT_REAP_CHILD), NULL, NULL,
+ Lpid, NULL, &g_out, &g_err, Aerror);
+ g_strfreev(Lcmd);
- if (Lstatus == FALSE || Lexit != 0) {
- g_free(Lout); g_free(Lerr);
+ if (Lstatus == FALSE) {
return 0;
}
-printf("lout = %s\n", Lout);
- Larrbuf = g_strsplit(Lout, "\n", 0);
+
+ Loutput = g_string_new("");
+ sc_grave_set_data(Ag, Loutput, "buffer");
+ sc_grave_set_data(Ag, &Lloccont, "loccont");
+
+ Lcom = g_io_channel_unix_new( g_out );
+ g_io_channel_set_encoding (Lcom, NULL, NULL);
+ g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
+ Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
+ read_all_output_callback, Ag);
+
+ while (Lloccont > 0) {
+ gtk_main_iteration();
+ }
+
+ g_source_remove(Lcomevent);
+
+ g_io_channel_shutdown(Lcom, FALSE, NULL);
+ g_io_channel_unref(Lcom);
+ g_spawn_close_pid(*Lpid);
+printf(" LU = >%s\n", Loutput->str);
+ Larrbuf = g_strsplit(Loutput->str, "\n", 0);
+
+ g_string_free(Loutput, TRUE);
+
+ sc_grave_del_data(Ag, "loccount");
+ sc_grave_del_data(Ag, "buffer");
+
for (i=0; Larrbuf[i]; i++) {
if (!*Larrbuf[i]) continue;
@@ -496,10 +536,12 @@
} else if (!strncmp(Larrbuf[i], CDRDAO_TOCTYPE, strlen(CDRDAO_TOCTYPE))) {
if (strstr(Larrbuf[i], CDRDAO_CD)) {
Llu += _MEDIA_CD;
+ printf("oui cd !\n");
}
} else if (!strncmp(Larrbuf[i], CDRDAO_CDR, strlen(CDRDAO_CDR))) {
if (!strstr(Larrbuf[i], CDRDAO_NA)) {
Llu += _MEDIA_CDR;
+ printf("oui cdr !\n");
}
} else if (!strncmp(Larrbuf[i], CDRDAO_EMPTY, strlen(CDRDAO_EMPTY))) {
if (strstr(Larrbuf[i], CDRDAO_YES)) {
@@ -512,6 +554,7 @@
} else if (!strncmp(Larrbuf[i], CDRDAO_APPENDABLE,
strlen(CDRDAO_APPENDABLE))) {
if (!strstr(Larrbuf[i], CDRDAO_NO)) {
Llu += _MEDIA_APPENDABLE;
+ printf("oui appednable !\n");
}
}
}
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c, sylvain cresto, 2005/03/01
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c, sylvain cresto, 2005/03/03
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c, sylvain cresto, 2005/03/11
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c, sylvain cresto, 2005/03/21
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c,
sylvain cresto <=
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c, sylvain cresto, 2005/03/28
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c, sylvain cresto, 2005/03/31
- [Graveman-cvs] Changes to graveman/current/src/cdrdao.c, sylvain cresto, 2005/03/31