From a51ab3810cc93cdcc32af78da2368405a2351d69 Mon Sep 17 00:00:00 2001 From: sthen Date: Fri, 6 Jun 2008 13:20:19 +0000 Subject: [PATCH] update to 8.86: - don't crash on corrupt CR2 files - extract largest JPEG from X3F files - new DNG matrices - support new cameras from Canon, Fuji, Hasselblad, Nikon, Nokia, Olympus, Panasonic, Pentax, Sony from brad, "go for it" okan --- graphics/dcraw/Makefile | 6 +-- graphics/dcraw/distinfo | 10 ++-- graphics/dcraw/patches/patch-dcraw_c | 76 ++++++++++++++-------------- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/graphics/dcraw/Makefile b/graphics/dcraw/Makefile index 0e5c3efe34b..d92690c7082 100644 --- a/graphics/dcraw/Makefile +++ b/graphics/dcraw/Makefile @@ -1,8 +1,8 @@ -# $OpenBSD: Makefile,v 1.10 2008/02/14 23:06:19 sthen Exp $ +# $OpenBSD: Makefile,v 1.11 2008/06/06 13:20:19 sthen Exp $ COMMENT = digital camera RAW format conversion tool -DISTNAME = dcraw-8.81 +DISTNAME = dcraw-8.86 CATEGORIES = graphics HOMEPAGE = http://www.cybercom.net/~dcoffin/dcraw/ @@ -21,7 +21,7 @@ PERMIT_DISTFILES_FTP = Yes WANTLIB = c m NO_REGRESS = Yes -SEPARATE_BUILD =simple +SEPARATE_BUILD = simple WRKDIST = ${WRKDIR}/dcraw diff --git a/graphics/dcraw/distinfo b/graphics/dcraw/distinfo index ab4ffd13bba..4938e6ea028 100644 --- a/graphics/dcraw/distinfo +++ b/graphics/dcraw/distinfo @@ -1,5 +1,5 @@ -MD5 (dcraw-8.81.tar.gz) = QrY539AFgM5cTeCRN3dYaA== -RMD160 (dcraw-8.81.tar.gz) = igAqPmgal09hfFUTy7iPM7wHlug= -SHA1 (dcraw-8.81.tar.gz) = KO+xXkFNH1Tsy/XGkXeTHHhmvf4= -SHA256 (dcraw-8.81.tar.gz) = XwZoGeW0Gen06jRMgEZQLNHwcunUEoWMyzeThQGBtcs= -SIZE (dcraw-8.81.tar.gz) = 134809 +MD5 (dcraw-8.86.tar.gz) = EMOP/nwzKs5Zy9i5wNzdkg== +RMD160 (dcraw-8.86.tar.gz) = oNQGmoC8hnm1ywu9eeQYZ8oeTI4= +SHA1 (dcraw-8.86.tar.gz) = vbyP6IZtxHv59t3u3tEoWTbLbVc= +SHA256 (dcraw-8.86.tar.gz) = 5lkJW3DAH79l7HC/oOcJADVxmDJSold81cOKDH0wOJY= +SIZE (dcraw-8.86.tar.gz) = 143473 diff --git a/graphics/dcraw/patches/patch-dcraw_c b/graphics/dcraw/patches/patch-dcraw_c index 7751f63c364..40d2087c51b 100644 --- a/graphics/dcraw/patches/patch-dcraw_c +++ b/graphics/dcraw/patches/patch-dcraw_c @@ -1,6 +1,6 @@ ---- dcraw.c.orig Mon Dec 10 07:43:31 2007 -+++ dcraw.c Mon Feb 4 00:14:31 2008 -@@ -1250,8 +1250,8 @@ void CLASS nikon_3700() +--- dcraw.c.orig Tue Apr 29 14:22:52 2008 ++++ dcraw.c Sun Jun 1 03:10:50 2008 +@@ -1253,8 +1253,8 @@ void CLASS nikon_3700() bits = (dp[8] & 3) << 4 | (dp[20] & 3); for (i=0; i < sizeof table / sizeof *table; i++) if (bits == table[i].bits) { @@ -11,7 +11,7 @@ } } -@@ -3007,7 +3007,7 @@ void CLASS foveon_interpolate() +@@ -3030,7 +3030,7 @@ void CLASS foveon_interpolate() FORC3 diag[c][i] = LAST(1,1)*LAST(2,2) - LAST(1,2)*LAST(2,1); #undef LAST FORC3 div[c] = diag[c][0]*0.3127 + diag[c][1]*0.329 + diag[c][2]*0.3583; @@ -20,19 +20,19 @@ if (foveon_camf_param ("IncludeBlocks", str)) foveon_fixed (div, 3, str); num = 0; -@@ -3371,9 +3371,9 @@ void CLASS bad_pixels() - if (*cp == '\\') *cp = '/'; +@@ -3397,9 +3397,9 @@ void CLASS bad_pixels (char *fname) + if (*cp == '\\') *cp = '/'; #endif - cp = fname + strlen(fname); -- if (cp[-1] == '/') cp--; -+ if (cp[-1] == '/') cp--, *cp = '\0'; - while (*fname == '/') { -- strcpy (cp, "/.badpixels"); -+ strlcat (fname, "/.badpixels", len); - if ((fp = fopen (fname, "r"))) break; - if (cp == fname) break; - while (*--cp != '/'); -@@ -4746,7 +4746,7 @@ void CLASS parse_mos (int offset) + cp = fname + strlen(fname); +- if (cp[-1] == '/') cp--; ++ if (cp[-1] == '/') cp--, *cp = '\0'; + while (*fname == '/') { +- strcpy (cp, "/.badpixels"); ++ strlcat (fname, "/.badpixels", len); + if ((fp = fopen (fname, "r"))) break; + if (cp == fname) break; + while (*--cp != '/'); +@@ -4798,7 +4798,7 @@ void CLASS parse_mos (int offset) if (!strcmp(data,"ShootObj_back_type")) { fscanf (ifp, "%d", &i); if ((unsigned) i < sizeof mod / sizeof (*mod)) @@ -41,7 +41,7 @@ } if (!strcmp(data,"icc_camera_to_tone_matrix")) { for (i=0; i < 9; i++) -@@ -5073,7 +5073,7 @@ int CLASS parse_tiff_ifd (int base) +@@ -5130,7 +5130,7 @@ int CLASS parse_tiff_ifd (int base) if (flip % 180 == 90) SWAP(width,height); filters = flip = 0; } @@ -50,7 +50,7 @@ load_raw = &CLASS imacon_full_load_raw; if (filters) { if (left_margin & 1) filters = 0x61616161; -@@ -5376,6 +5376,7 @@ void CLASS parse_external_jpeg() +@@ -5438,6 +5438,7 @@ void CLASS parse_external_jpeg() { char *file, *ext, *jname, *jfile, *jext; FILE *save=ifp; @@ -58,7 +58,7 @@ ext = strrchr (ifname, '.'); file = strrchr (ifname, '/'); -@@ -5383,13 +5384,15 @@ void CLASS parse_external_jpeg() +@@ -5445,13 +5446,15 @@ void CLASS parse_external_jpeg() if (!file) file = ifname-1; file++; if (!ext || strlen(ext) != 4 || ext-file != 8) return; @@ -77,7 +77,7 @@ memcpy (jfile, file+4, 4); memcpy (jfile+4, file, 4); } else -@@ -5606,7 +5609,7 @@ void CLASS parse_sinar_ia() +@@ -5668,7 +5671,7 @@ void CLASS parse_sinar_ia() fread (make, 64, 1, ifp); make[63] = 0; if ((cp = strchr(make,' '))) { @@ -86,7 +86,7 @@ *cp = 0; } raw_width = get2(); -@@ -5784,7 +5787,7 @@ void CLASS parse_smal (int offset, int fsize) +@@ -5846,7 +5849,7 @@ void CLASS parse_smal (int offset, int fsize) raw_height = height = get2(); raw_width = width = get2(); strcpy (make, "SMaL"); @@ -95,7 +95,7 @@ if (ver == 6) load_raw = &CLASS smal_v6_load_raw; if (ver == 9) load_raw = &CLASS smal_v9_load_raw; } -@@ -5812,7 +5815,7 @@ void CLASS parse_cine() +@@ -5874,7 +5877,7 @@ void CLASS parse_cine() } fseek (ifp, off_setup+792, SEEK_SET); strcpy (make, "CINE"); @@ -104,7 +104,7 @@ fseek (ifp, 12, SEEK_CUR); switch ((i=get4()) & 0xffffff) { case 3: filters = 0x94949494; break; -@@ -5910,11 +5913,11 @@ void CLASS parse_foveon() +@@ -5973,11 +5976,11 @@ void CLASS parse_foveon() if (!strcmp (name, "ISO")) iso_speed = atoi(value); if (!strcmp (name, "CAMMANUF")) @@ -119,7 +119,7 @@ if (!strcmp (name, "TIME")) timestamp = atoi(value); if (!strcmp (name, "EXPTIME")) -@@ -6305,7 +6308,7 @@ void CLASS adobe_coeff (char *make, char *model) +@@ -6396,7 +6399,7 @@ void CLASS adobe_coeff (char *make, char *model) char name[130]; int i, j; @@ -127,8 +127,8 @@ + snprintf (name, sizeof name, "%s %s", make, model); for (i=0; i < sizeof table / sizeof *table; i++) if (!strncmp (name, table[i].prefix, strlen(table[i].prefix))) { - if (table[i].black) -@@ -6527,8 +6530,8 @@ void CLASS identify() + if (table[i].black) black = (ushort) table[i].black; +@@ -6634,8 +6637,8 @@ void CLASS identify() else for (i=0; i < sizeof table / sizeof *table; i++) if (fsize == table[i].fsize) { @@ -139,7 +139,7 @@ if (table[i].withjpeg) parse_external_jpeg(); } -@@ -6537,7 +6540,7 @@ void CLASS identify() +@@ -6644,7 +6647,7 @@ void CLASS identify() for (i=0; i < sizeof corp / sizeof *corp; i++) if (strstr (make, corp[i])) /* Simplify company names */ @@ -148,16 +148,16 @@ if (!strncmp (make,"KODAK",5)) make[16] = model[16] = 0; cp = make + strlen(make); /* Remove trailing spaces */ -@@ -6894,7 +6897,7 @@ cp_e2500: - maximum = 0x3e00; - } else if (!strncmp(model,"FinePix",7)) { +@@ -7035,7 +7038,7 @@ cp_e2500: + load_raw = &CLASS unpacked_load_raw; + } else if (!strcmp(make,"FUJIFILM")) { if (!strcmp(model+7,"S2Pro")) { - strcpy (model+7," S2Pro"); + strcpy (model + 7, " S2Pro"); height = 2144; width = 2880; flip = 6; -@@ -6937,7 +6940,7 @@ cp_e2500: +@@ -7077,7 +7080,7 @@ cp_e2500: } else if (!strncmp(model,"ALPHA",5) || !strncmp(model,"DYNAX",5) || !strncmp(model,"MAXXUM",6)) { @@ -165,8 +165,8 @@ + snprintf (model+20, sizeof model - 20, "DYNAX %-10s", model+6+(model[0]=='M')); adobe_coeff (make, model+20); load_raw = &CLASS packed_12_load_raw; - maximum = 0xffb; -@@ -7502,7 +7505,7 @@ qt_common: + } else if (!strncmp(model,"DiMAGE G",8)) { +@@ -7618,7 +7621,7 @@ qt_common: pre_mul[2] = 1.504; } if (!model[0]) @@ -175,7 +175,7 @@ if (filters == UINT_MAX) filters = 0x94949494; if (raw_color) adobe_coeff (make, model); if (thumb_offset && !thumb_height) { -@@ -7666,8 +7669,8 @@ void CLASS convert_to_rgb() +@@ -7782,8 +7785,8 @@ void CLASS convert_to_rgb() } for (i=0; i < phead[0]/4; i++) oprof[i] = htonl(oprof[i]); @@ -186,7 +186,7 @@ for (i=0; i < 3; i++) for (j=0; j < colors; j++) for (out_cam[i][j] = k=0; k < 3; k++) -@@ -7897,7 +7900,7 @@ void CLASS tiff_head (struct tiff_hdr *th, int full) +@@ -8033,7 +8036,7 @@ void CLASS tiff_head (struct tiff_hdr *th, int full) strncpy (th->model, model, 64); strcpy (th->soft, "dcraw v"VERSION); t = gmtime (×tamp); @@ -195,15 +195,15 @@ t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); strncpy (th->artist, artist, 64); } -@@ -7974,6 +7977,7 @@ int CLASS main (int argc, char **argv) - char opm, opt, *ofname, *sp, *cp, *dark_frame=0; +@@ -8111,6 +8114,7 @@ int CLASS main (int argc, char **argv) + char opm, opt, *ofname, *sp, *cp, *bpfile=0, *dark_frame=0; const char *write_ext; struct utimbuf ut; + size_t ofsize; FILE *ofp; #ifndef NO_LCMS char *cam_profile=0, *out_profile=0; -@@ -8291,19 +8295,20 @@ thumbnail: +@@ -8432,19 +8436,20 @@ thumbnail: write_ext = ".tiff"; else write_ext = ".pgm\0.ppm\0.ppm\0.pam" + colors*5-5;