Perhaps these patches to Grip 3.2.0 and 3.3.0 could close this bug?
-Mikko
Common subdirectories: grip-3.2.0-debian-orig/src/.deps and grip-3.2.0/src/.deps
Binary files grip-3.2.0-debian-orig/src/grip and grip-3.2.0/src/grip differ
Common subdirectories: grip-3.2.0-debian-orig/src/.libs and grip-3.2.0/src/.libs
diff --exclude '*.o' -u grip-3.2.0-debian-orig/src/rip.c grip-3.2.0/src/rip.c
--- grip-3.2.0-debian-orig/src/rip.c 2005-01-16 15:49:10.000000000 +0200
+++ grip-3.2.0/src/rip.c 2005-02-20 18:13:44.290689912 +0200
@@ -815,6 +815,8 @@
gboolean result=FALSE;
char *conv_str;
gsize rb,wb;
+ int status;
+ pid_t pid;
uinfo=&(ginfo->gui_info);
@@ -883,14 +885,26 @@
}
/* Check if a rip finished */
+ pid = waitpid(ginfo->rippid, &status, WNOHANG);
+
if((ginfo->using_builtin_cdp&&!ginfo->in_rip_thread) ||
- (!ginfo->using_builtin_cdp&&waitpid(ginfo->rippid,NULL,WNOHANG))) {
- if(!ginfo->using_builtin_cdp) waitpid(ginfo->rippid,NULL,0);
- else {
+ (!ginfo->using_builtin_cdp&&WIFEXITED(status))) {
+
+ if(ginfo->using_builtin_cdp) {
CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
GTK_PIXMAP(uinfo->lcd_smile_indicator));
CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
GTK_PIXMAP(uinfo->smile_indicator));
+ } else if (WIFEXITED(status)) {
+ if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+ (pid == ginfo->rippid)) {
+ LogStatus(ginfo, _("Rip succeeded! %s PID = %d returned
%d\n"),
+ ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+ } else {
+ LogStatus(ginfo, _("Rip failed! %s PID = %d returned %d\n"),
+ ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+ DisplayMsg(_("Error: rip failed."));
+ }
}
LogStatus(ginfo,_("Rip finished\n"));
@@ -990,10 +1004,20 @@
percent);
}
- if(waitpid(ginfo->mp3pid[mycpu],NULL,WNOHANG)) {
- waitpid(ginfo->mp3pid[mycpu],NULL,0);
- ginfo->encoding&=~(1<<mycpu);
+ pid = waitpid(ginfo->mp3pid[mycpu], &status, WNOHANG);
+
+ if(WIFEXITED(status)) {
+ if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+ (pid == ginfo->mp3pid[mycpu])) {
+ LogStatus(ginfo, _("Encoding succeeded! %s process PID = %d
returned %d\n"),
+ ginfo->mp3exename, ginfo->mp3pid[mycpu],
WEXITSTATUS(status));
+ } else {
+ LogStatus(ginfo, _("Encoding failed! %s process PID = %d
returned %d\n"),
+ ginfo->mp3exename, ginfo->mp3pid[mycpu],
WEXITSTATUS(status));
+ DisplayMsg(_("Error: encoding failed."));
+ }
+ ginfo->encoding&=~(1<<mycpu);
LogStatus(ginfo,_("Finished encoding on cpu %d\n"),mycpu);
ginfo->all_enclast[mycpu]=0;
gtk_progress_bar_update(GTK_PROGRESS_BAR(uinfo->mp3progbar[mycpu]),
Only in grip-3.3.0/src/: .deps
Only in grip-3.3.0/src/: grip
Only in grip-3.3.0/src/: .libs
Only in grip-3.3.0/src/: Makefile
diff --exclude '*.o' -u grip-3.3.0-original/src/rip.c grip-3.3.0/src/rip.c
--- grip-3.3.0-original/src/rip.c 2005-01-29 21:16:51.000000000 +0200
+++ grip-3.3.0/src/rip.c 2005-02-20 18:10:34.560533280 +0200
@@ -791,7 +791,9 @@
gboolean result=FALSE;
char *conv_str;
gsize rb,wb;
-
+ int status;
+ pid_t pid;
+
uinfo=&(ginfo->gui_info);
if(ginfo->ripping) {
@@ -865,14 +867,28 @@
}
/* Check if a rip finished */
+ pid = waitpid(ginfo->rippid, &status, WNOHANG);
+
if((ginfo->using_builtin_cdp&&!ginfo->in_rip_thread) ||
- (!ginfo->using_builtin_cdp&&waitpid(ginfo->rippid,NULL,WNOHANG))) {
- if(!ginfo->using_builtin_cdp) waitpid(ginfo->rippid,NULL,0);
- else {
+ (!ginfo->using_builtin_cdp&&WIFEXITED(status))) {
+
+ if(ginfo->using_builtin_cdp) {
CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
GTK_PIXMAP(uinfo->lcd_smile_indicator));
CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
GTK_PIXMAP(uinfo->smile_indicator));
+ } else if (WIFEXITED(status)) {
+ if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+ (pid == ginfo->rippid)) {
+ LogStatus(ginfo, _("Rip succeeded! %s PID = %d returned
%d\n"),
+ ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+ } else {
+ LogStatus(ginfo, _("Rip failed! %s PID = %d returned %d\n"),
+ ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+
+ gnome_app_warning((GnomeApp *)ginfo->gui_info.app,
+ _("Error: rip failed."));
+ }
}
LogStatus(ginfo,_("Rip finished\n"));
@@ -976,8 +992,20 @@
percent);
}
- if(waitpid(ginfo->mp3pid[mycpu],NULL,WNOHANG)) {
- waitpid(ginfo->mp3pid[mycpu],NULL,0);
+ pid = waitpid(ginfo->mp3pid[mycpu], &status, WNOHANG);
+
+ if(WIFEXITED(status)) {
+ if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+ (pid == ginfo->mp3pid[mycpu])) {
+ LogStatus(ginfo, _("Encoding succeeded! %s process PID = %d
returned %d\n"),
+ ginfo->mp3exename, ginfo->mp3pid[mycpu],
WEXITSTATUS(status));
+ } else {
+ LogStatus(ginfo, _("Encoding failed! %s process PID = %d
returned %d\n"),
+ ginfo->mp3exename, ginfo->mp3pid[mycpu],
WEXITSTATUS(status));
+ gnome_app_warning((GnomeApp *)ginfo->gui_info.app,
+ _("Error: encode failed."));
+ }
+
ginfo->encoding&=~(1<<mycpu);
LogStatus(ginfo,_("Finished encoding on cpu %d\n"),mycpu);