diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-08-26 07:29:14 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-08-26 07:29:14 +0000 |
commit | 061dfc6edd70967c15cf25e2472936b60b45d16d (patch) | |
tree | 869621886d1a8d65f12c71b68b2fc87a2e2818aa | |
parent | 483856a78f157e17bbc2405519be1d9a00b38adc (diff) | |
download | netpbm-mirror-061dfc6edd70967c15cf25e2472936b60b45d16d.tar.gz netpbm-mirror-061dfc6edd70967c15cf25e2472936b60b45d16d.tar.xz netpbm-mirror-061dfc6edd70967c15cf25e2472936b60b45d16d.zip |
Eliminate pm_perror() in favor of informative error messages
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@20 9d0c8265-081b-0410-96cb-a4ca84ce46f8
-rw-r--r-- | converter/ppm/xvminitoppm.c | 4 | ||||
-rw-r--r-- | doc/HISTORY | 2 | ||||
-rw-r--r-- | editor/pbmpscale.c | 230 | ||||
-rw-r--r-- | lib/libpm.c | 12 | ||||
-rw-r--r-- | lib/pm.h | 4 |
5 files changed, 123 insertions, 129 deletions
diff --git a/converter/ppm/xvminitoppm.c b/converter/ppm/xvminitoppm.c index dfc76fcf..64fb0762 100644 --- a/converter/ppm/xvminitoppm.c +++ b/converter/ppm/xvminitoppm.c @@ -12,6 +12,7 @@ #include <assert.h> #include <string.h> +#include <errno.h> #include "pm_c_util.h" #include "nstring.h" @@ -61,7 +62,8 @@ getline(FILE * const ifP, rc = fgets(buf, size, ifP); if (rc == NULL) { if (ferror(ifP)) - pm_perror("read error"); + pm_error("read error. fgets() failed, errno=%d (%s)", + errno, strerror(errno))); else pm_error("unexpected EOF"); } diff --git a/doc/HISTORY b/doc/HISTORY index bca4c520..fc875ec0 100644 --- a/doc/HISTORY +++ b/doc/HISTORY @@ -97,6 +97,8 @@ CHANGE HISTORY not yet BJH Release 10.36 + Eliminate pm_perror() in favor of informative error messages. + libnetpbm: fix rgb:r/g/b color name parsing for invalid syntax. diff --git a/editor/pbmpscale.c b/editor/pbmpscale.c index 63f203ed..2e24f3cd 100644 --- a/editor/pbmpscale.c +++ b/editor/pbmpscale.c @@ -81,119 +81,125 @@ void nextrow_pscale(ifd, row) } + + int -main(argc, argv) - int argc; - char *argv[]; -{ - FILE *ifd; - register bit *outrow; - register int row, col, i, k; - int scale, cutoff, ucutoff ; - unsigned char *flags; - - pbm_init( &argc, argv ); - - if (argc < 2) - pm_usage("scale [pbmfile]"); - - scale = atoi(argv[1]); - if (scale < 1) - pm_perror("bad scale (< 1)"); - - if (argc == 3) - ifd = pm_openr(argv[2]); - else - ifd = stdin ; - - inrow[0] = inrow[1] = inrow[2] = NULL; - pbm_readpbminit(ifd, &columns, &rows, &format) ; - - outrow = pbm_allocrow(columns*scale) ; - MALLOCARRAY(flags, columns); - if (flags == NULL) - pm_error("out of memory") ; - - pbm_writepbminit(stdout, columns*scale, rows*scale, 0) ; - - cutoff = scale / 2; - ucutoff = scale - 1 - cutoff; - nextrow_pscale(ifd, 0); - for (row = 0; row < rows; row++) { - nextrow_pscale(ifd, row+1); - for (col = 0; col < columns; col++) { - flags[col] = 0 ; - for (i = 0; i != 8; i += 2) { - int vec = inrow[thisrow][col] != PBM_WHITE; - for (k = 0; k < 7; k++) { - int x = col + xd_pscale[(k+i)&7] ; - int y = thisrow + yd_pscale[(k+i)&7] ; - vec <<= 1; - if (x >=0 && x < columns && inrow[y]) - vec |= (inrow[y][x] != PBM_WHITE) ; +main(int argc, char ** argv) { + + FILE * ifP; + bit * outrow; + unsigned int row; + int scale, cutoff, ucutoff ; + unsigned char *flags; + + pbm_init( &argc, argv ); + + if (argc < 2) + pm_usage("scale [pbmfile]"); + + scale = atoi(argv[1]); + if (scale < 1) + pm_error("Scale argument must be at least one. You specified '%s'", + argv[1]); + + if (argc == 3) + ifP = pm_openr(argv[2]); + else + ifP = stdin ; + + inrow[0] = inrow[1] = inrow[2] = NULL; + pbm_readpbminit(ifP, &columns, &rows, &format) ; + + outrow = pbm_allocrow(columns*scale) ; + MALLOCARRAY(flags, columns); + if (flags == NULL) + pm_error("out of memory") ; + + pbm_writepbminit(stdout, columns*scale, rows*scale, 0) ; + + cutoff = scale / 2; + ucutoff = scale - 1 - cutoff; + nextrow_pscale(ifP, 0); + for (row = 0; row < rows; ++row) { + unsigned int col; + unsigned int i; + nextrow_pscale(ifP, row+1); + for (col = 0; col < columns; ++col) { + unsigned int i; + flags[col] = 0 ; + for (i = 0; i != 8; i += 2) { + int vec = inrow[thisrow][col] != PBM_WHITE; + unsigned int k; + for (k = 0; k < 7; ++k) { + int x = col + xd_pscale[(k+i)&7] ; + int y = thisrow + yd_pscale[(k+i)&7] ; + vec <<= 1; + if (x >=0 && x < columns && inrow[y]) + vec |= (inrow[y][x] != PBM_WHITE) ; + } + flags[col] |= corner(vec)<<i ; } - flags[col] |= corner(vec)<<i ; - } - } - for (i = 0; i < scale; i++) { - bit *ptr = outrow ; - int zone = (i > ucutoff) - (i < cutoff) ; - int cut = (zone < 0) ? (cutoff - i) : - (zone > 0) ? (i - ucutoff) : 0 ; - - for (col = 0; col < columns; col++) { - int pix = inrow[thisrow][col] ; - int flag = flags[col] ; - int cutl, cutr ; - - switch (zone) { - case -1: - switch (NW(flag)) { - case 0: cutl = 0; break; - case 1: cutl = cut; break; - case 2: cutl = cut ? cut-1 : 0; break; - case 3: cutl = (cut && cutoff > 1) ? cut-1 : cut; break; - default: cutl = 0; /* Should never reach here */ - } - switch (NE(flag)) { - case 0: cutr = 0; break; - case 1: cutr = cut; break; - case 2: cutr = cut ? cut-1 : 0; break; - case 3: cutr = (cut && cutoff > 1) ? cut-1 : cut; break; - default: cutr = 0; /* Should never reach here */ - } - break; - case 0: - cutl = cutr = 0; - break ; - case 1: - switch (SW(flag)) { - case 0: cutl = 0; break; - case 1: cutl = cut; break; - case 2: cutl = cut ? cut-1 : 0; break; - case 3: cutl = (cut && cutoff > 1) ? cut-1 : cut; break; - default: cutl = 0; /* should never reach here */ - } - switch (SE(flag)) { - case 0: cutr = 0; break; - case 1: cutr = cut; break; - case 2: cutr = cut ? cut-1 : 0; break; - case 3: cutr = (cut && cutoff > 1) ? cut-1 : cut; break; - default: cutr = 0; /* should never reach here */ - } - break; - default: cutl = 0; cutr = 0; /* Should never reach here */ + } + for (i = 0; i < scale; i++) { + bit *ptr = outrow ; + int zone = (i > ucutoff) - (i < cutoff) ; + int cut = (zone < 0) ? (cutoff - i) : + (zone > 0) ? (i - ucutoff) : 0 ; + + for (col = 0; col < columns; ++col) { + int pix = inrow[thisrow][col] ; + int flag = flags[col] ; + int cutl, cutr; + unsigned int k; + + switch (zone) { + case -1: + switch (NW(flag)) { + case 0: cutl = 0; break; + case 1: cutl = cut; break; + case 2: cutl = cut ? cut-1 : 0; break; + case 3: cutl = (cut && cutoff > 1) ? cut-1 : cut; break; + default: cutl = 0; /* Should never reach here */ + } + switch (NE(flag)) { + case 0: cutr = 0; break; + case 1: cutr = cut; break; + case 2: cutr = cut ? cut-1 : 0; break; + case 3: cutr = (cut && cutoff > 1) ? cut-1 : cut; break; + default: cutr = 0; /* Should never reach here */ + } + break; + case 0: + cutl = cutr = 0; + break ; + case 1: + switch (SW(flag)) { + case 0: cutl = 0; break; + case 1: cutl = cut; break; + case 2: cutl = cut ? cut-1 : 0; break; + case 3: cutl = (cut && cutoff > 1) ? cut-1 : cut; break; + default: cutl = 0; /* should never reach here */ + } + switch (SE(flag)) { + case 0: cutr = 0; break; + case 1: cutr = cut; break; + case 2: cutr = cut ? cut-1 : 0; break; + case 3: cutr = (cut && cutoff > 1) ? cut-1 : cut; break; + default: cutr = 0; /* should never reach here */ + } + break; + default: cutl = 0; cutr = 0; /* Should never reach here */ + } + for (k = 0; k < cutl; ++k) /* left part */ + *ptr++ = !pix ; + for (k = 0; k < scale-cutl-cutr; ++k) /* center part */ + *ptr++ = pix ; + for (k = 0; k < cutr; ++k) /* right part */ + *ptr++ = !pix ; } - for (k = 0; k < cutl; k++) /* left part */ - *ptr++ = !pix ; - for (k = 0; k < scale-cutl-cutr; k++) /* centre part */ - *ptr++ = pix ; - for (k = 0; k < cutr; k++) /* right part */ - *ptr++ = !pix ; - } - pbm_writepbmrow(stdout, outrow, scale*columns, 0) ; - } - } - pm_close(ifd); - exit(0); + pbm_writepbmrow(stdout, outrow, scale*columns, 0) ; + } + } + pm_close(ifP); + return 0; } diff --git a/lib/libpm.c b/lib/libpm.c index 2e563a09..978657a9 100644 --- a/lib/libpm.c +++ b/lib/libpm.c @@ -114,18 +114,6 @@ pm_usage(const char usage[]) { -void -pm_perror(const char reason[] ) { - - if (reason != NULL && strlen(reason) != 0) - pm_error("%s - errno=%d (%s)", reason, errno, strerror(errno)); - else - pm_error("Something failed with errno=%d (%s)", - errno, strerror(errno)); -} - - - void PM_GNU_PRINTF_ATTR(1,2) pm_message(const char format[], ...) { diff --git a/lib/pm.h b/lib/pm.h index 040a6a4b..199d47f2 100644 --- a/lib/pm.h +++ b/lib/pm.h @@ -160,10 +160,6 @@ pm_message (const char format[], ...); void PM_GNU_PRINTF_ATTR(1,2) pm_error (const char reason[], ...); -/* Obsolete - use helpful error message instead */ -void -pm_perror (const char reason[]); - /* Obsolete - use shhopt and user's manual instead */ void pm_usage (const char usage[]); |