--- psiconv/trunk/program/psiconv/magick-aux.c 2014/10/20 08:40:49 342 +++ psiconv/trunk/program/psiconv/magick-aux.c 2014/10/20 11:44:17 343 @@ -34,47 +34,83 @@ /* This used to be very ugly, but nowadays it is much better */ #if IMAGEMAGICK_API == 1 || IMAGEMAGICK_API == 2 -const MagickInfo * GetMagickFileList(void) +const MagickInfo ** GetMagickFileList(void) { + int len,i; + const MagickInfo *ptr; + const MagickInfo *mi_ptr; + const MagickInfo **copy; ExceptionInfo exc; GetExceptionInfo(&exc); OpenModules(&exc); - return GetMagickInfo(NULL,&exc); + + mi_ptr = GetMagickInfo(NULL,&exc); + for (len = 0, ptr=mi_ptr; ptr != NULL; len++, ptr = ptr->next); + copy = malloc((len+1) * sizeof(*copy)); + for (i=0, ptr=mi_ptr; ptr != NULL; i++, ptr = ptr->next) + copy[i] = ptr; + copy[len] = NULL; + return copy; } #elif IMAGEMAGICK_API == 3 -const MagickInfo * GetMagickFileList(void) +const MagickInfo ** GetMagickFileList(void) { MagickInfo **mi; - unsigned long nr; + const MagickInfo **copy; + unsigned long len; int i; ExceptionInfo exc; GetExceptionInfo(&exc); OpenModules(&exc); - mi = GetMagickInfoList("*",&nr); - for (i = 0; i < nr-1; i++) { - mi[i]->next = mi[i+1]; + mi = GetMagickInfoList("*",&len); + copy = malloc((len+1) * sizeof(*copy)); + for (i = 0; i < len; i++) { + copy[i] = mi[i]; } - return *mi; + copy[len] = NULL; + return copy; } #elif IMAGEMAGICK_API == 4 -const MagickInfo * GetMagickFileList(void) +const MagickInfo ** GetMagickFileList(void) { MagickInfo **mi; - unsigned long nr; + const MagickInfo **copy; + unsigned long len; int i; ExceptionInfo exc; GetExceptionInfo(&exc); OpenModules(&exc); - mi = GetMagickInfoList("*",&nr,&exc); - for (i = 0; i < nr-1; i++) { - mi[i]->next = mi[i+1]; + mi = GetMagickInfoList("*",&len,&exc); + copy = malloc((len+1) * sizeof(*copy)); + for (i = 0; i < len; i++) { + copy[i] = mi[i]; } - return *mi; + copy[len] = NULL; + return copy; } + +#elif IMAGEMAGICK_API == 100 +/* GraphicsMagick library */ +const MagickInfo ** GetMagickFileList(void) +{ + int i,len; + MagickInfo **mi; + const MagickInfo **copy; + ExceptionInfo exception; + GetExceptionInfo(&exception); + mi = GetMagickInfoArray(&exception); + for (len = 0; mi[len]; len++); + copy = malloc((len+1) * sizeof(*copy)); + for (i = 0; i <= len; i++) { + copy[i] = mi[i]; + } + return copy; +} + #endif #endif /* IMAGEMAGICK */