Hello community,
here is the log from the commit of package dcraw for openSUSE:Factory
checked in at Mon Mar 28 10:26:25 CEST 2011.
--------
--- dcraw/dcraw.changes 2010-05-02 01:03:29.000000000 +0200
+++ /mounts/work_src_done/STABLE/dcraw/dcraw.changes 2011-03-23 21:16:27.000000000 +0100
@@ -1,0 +2,37 @@
+Wed Mar 23 19:09:55 UTC 2011 - asterios.dramis@gmail.com
+
+- updated to version 9.06
+ * Support the Nikon D3100 & D7000 & P7000, Panasonic FZ40 & FZ100 & LX5,
+ Samsung WB2000, Nokia X2, Canon SX120 & PowerShot G12, Hasselblad H4D,
+ Pentax 645D & K-5 & K-r, Sony SLT-A33 & SLT-A55V, Canon SX20 IS, Samsung
+ EX1, Sony A450, Kodak Z981, Olympus E-P2, Panasonic G2 & GF1, Samsung WB550
+ and NX10, Casio EX-Z1050, Fuji HS10, Canon EOS 550D / Digital Rebel T2i /
+ Kiss Digital X4.
+ * Support high-ISO images from the Samsung WB2000.
+ * Read correct camera WB from Nikon NRW and Samsung SRW files.
+ * Copied color matrices from Adobe DNG Converter 6.3.
+ * Fixed rotation for Kodak EasyShare and some Canon EOS photos.
+ * Get Fuji HS10 black level from the metadata.
+ * Built color matrices for the Sony NEX-3 and NEX-5.
+ * Support A100 images modified by Sony software.
+ * Split the darkness level into four separate color channels.
+- Replaced dcraw.c and dcraw.1 with the package tarball provided from the official
+ site.
+- Added clean_crw and fuji_green programs.
+- Added rawphoto.c file in the documentation (gimp-plugin).
+- Removed dcwrap program (no longer provided from the official site).
+- Spec file updates:
+ * Changed version numbering scheme (used the one from the tarball provided).
+ * Changes based on rpmdevtools templates and spec-cleaner run.
+ * Added description for dcraw-omp.patch based on openSUSE Patches Guidelines.
+ * Added gettext-runtime in BuildRequires:.
+ * Added dcraw-lang package.
+ * Compile also fujiturn16 program (to rotate 48-bit PPM images).
+ * Updates in %prep, %build, %install and %files sections based also on Fedora
+ and Debian packages.
+- Rebased dcraw-omp.patch to apply cleanly.
+- Added a patch for dcraw.1 to fix "macro `LO' not defined" rpm post build
+ check warning.
+- Added a patch for fuji_green.c to fix gcc implicit declaration warning.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
dcraw.1
dcraw.c
dcwrap
New:
----
clean_crw.c
dcraw-9.06.tar.bz2
dcraw.1.patch
fuji_green.c
fuji_green.c_fix_gcc_warnings.patch
rawphoto.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dcraw.spec ++++++
--- /var/tmp/diff_new_pack.KYR4cP/_old 2011-03-28 10:16:48.000000000 +0200
+++ /var/tmp/diff_new_pack.KYR4cP/_new 2011-03-28 10:16:48.000000000 +0200
@@ -1,7 +1,7 @@
#
-# spec file for package dcraw (Version 1.432)
+# spec file for package dcraw
#
-# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,72 +19,151 @@
Name: dcraw
-BuildRequires: libjpeg-devel liblcms-devel
-Version: 1.432
+Version: 9.06
Release: 1
+Summary: Raw Digital Photo Decoding
+
License: PERMISSIVE-OSI-COMPLIANT
-Group: Productivity/Graphics/Convertors
Url: http://www.cybercom.net/~dcoffin/dcraw/
-Summary: Raw Digital Photo Decoding
-# NOTE: call "sh update_dcraw" to update to latest version.
-Source: http://www.cybercom.net/~dcoffin/dcraw/dcraw.c
-Source1: http://www.cybercom.net/~dcoffin/dcraw/dcraw.1
-Source2: README
-Source3: README.SuSE
-Source4: badpixels
-Source5: http://www.cybercom.net/~dcoffin/dcraw/dcwrap
-Source7: http://www.cybercom.net/~dcoffin/dcraw/fujiturn.c
-Source8: http://www.cybercom.net/~dcoffin/dcraw/parse.c
-Source9: update_dcraw
-Patch: dcraw-omp.patch
-AutoReqProv: on
+Group: Productivity/Graphics/Convertors
+# http://www.cybercom.net/~dcoffin/dcraw/archive/dcraw-9.06.tar.gz
+Source0: %{name}-%{version}.tar.bz2
+#*** NOTE: run "sh update_dcraw" to update to latest version of the following sources. wget, rcs and lynx are required for the update.
+Source1: README
+# http://www.cybercom.net/~dcoffin/dcraw/.badpixels
+Source2: badpixels
+Source3: http://www.cybercom.net/~dcoffin/dcraw/clean_crw.c
+Source4: http://www.cybercom.net/~dcoffin/dcraw/fuji_green.c
+Source5: http://www.cybercom.net/~dcoffin/dcraw/fujiturn.c
+Source6: http://www.cybercom.net/~dcoffin/dcraw/parse.c
+Source7: http://www.cybercom.net/~dcoffin/dcraw/rawphoto.c
+#***
+Source100: README.SuSE
+Source101: update_dcraw
+# PATCH-FEATURE-OPENSUSE dcraw-omp.patch postadal@suse.cz -- Speed up decoding (-fomp disabled by default)
+Patch0: dcraw-omp.patch
+# PATCH-FIX-OPENSUSE dcraw.1.patch asterios.dramis@gmail.com -- Fix "macro `LO' not defined" rpm post build check warning
+Patch1: dcraw.1.patch
+# PATCH-FIX-OPENSUSE fuji_green.c_fix_gcc_warnings.patch asterios.dramis@gmail.com - Fix gcc implicit declaration warning
+Patch2: fuji_green.c_fix_gcc_warnings.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: gettext-runtime
+BuildRequires: libjpeg-devel
+BuildRequires: liblcms-devel
+Recommends: %{name}-lang = %{version}
+
%description
Command line tools for raw digital photo decoding and processing.
-
-
-Authors:
---------
- Dave Coffin
-
+%lang_package
%prep
-%setup -q -n . -D -T 0
- cp -a %SOURCE0 %SOURCE1 %SOURCE2 %SOURCE3 %SOURCE4 %SOURCE5 %SOURCE7 %SOURCE8 .
-%patch
- mv badpixels .badpixels
+%setup -q -n %{name}
+cp -a %SOURCE3 %SOURCE4 %SOURCE5 %SOURCE6 .
+%patch0
+%patch1
+%patch2
%build
- export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
-%if %suse_version > 1000
- export CFLAGS="$CFLAGS -fstack-protector-all"
-%endif
- for file in *.c ; do
+export CFLAGS="%{optflags} -fno-strict-aliasing -fstack-protector-all"
+
+for file in *.c ; do
LDFLAGS=
+ OTHERFLAGS=
if test $file = dcraw.c ; then
- LDFLAGS="-lm -ljpeg -llcms"
+ LDFLAGS="-lm -ljpeg -llcms -DLOCALEDIR=\""%{_datadir}/locale"\""
# gcc $CFLAGS -fopenmp -o ${file%.c}-omp $file $LDFLAGS
fi
- gcc $CFLAGS -o ${file%.c} $file $LDFLAGS
- done
+ if test $file = fuji_green.c ; then
+ LDFLAGS="-lm"
+ fi
+ gcc $CFLAGS $OTHERFLAGS -o ${file%.c} $file $LDFLAGS
+done
+# Compile with -D_16BIT to rotate 48-bit PPM images
+gcc $CFLAGS -D_16BIT -o fujiturn16 fujiturn.c
+
+# Build language catalogs
+for catsrc in dcraw_*.po ; do
+ lang="${catsrc%.po}"
+ lang="${lang#dcraw_}"
+ msgfmt -o "dcraw_${lang}.mo" "$catsrc"
+done
%install
- mkdir -p $RPM_BUILD_ROOT/%_bindir
- mkdir -p $RPM_BUILD_ROOT%_mandir/man1
- install -m 0755 dcraw $RPM_BUILD_ROOT/%_bindir/
-# install -m 0755 dcraw-omp $RPM_BUILD_ROOT/%_bindir/
- install -m 0644 dcraw.1 $RPM_BUILD_ROOT/%_mandir/man1/
- install -m 0755 parse $RPM_BUILD_ROOT/%_bindir/dcparse
- install -m 0755 fujiturn $RPM_BUILD_ROOT/%_bindir/
+install -d -m 0755 %{buildroot}%{_bindir}
+install -d -m 0755 %{buildroot}%{_mandir}/man1
+
+install -pm 0755 dcraw %{buildroot}%{_bindir}/
+#install -pm 0755 dcraw-omp %{buildroot}%{_bindir}/
+install -pm 0644 dcraw.1 %{buildroot}%{_mandir}/man1/
+
+install -pm 0755 clean_crw %{buildroot}%{_bindir}/
+install -pm 0755 fuji_green %{buildroot}%{_bindir}/
+install -pm 0755 fujiturn %{buildroot}%{_bindir}/
+install -pm 0755 fujiturn16 %{buildroot}%{_bindir}/
+install -pm 0755 parse %{buildroot}%{_bindir}/dcparse
+
+# Install language catalogs
+for catalog in dcraw_*.mo ; do
+ lang="${catalog%.mo}"
+ lang="${lang#dcraw_}"
+ install -d -m 0755 "%{buildroot}%{_datadir}/locale/${lang}/LC_MESSAGES"
+ install -pm 0644 "$catalog" "%{buildroot}%{_datadir}/locale/${lang}/LC_MESSAGES/dcraw.mo"
+done
+
+# Install localized manpages
+for manpage in dcraw_*.1 ; do
+ lang="${manpage%.1}"
+ lang="${lang#dcraw_}"
+ install -d -m 0755 "%{buildroot}%{_mandir}/${lang}/man1"
+ install -pm 0644 "${manpage}" "%{buildroot}%{_mandir}/${lang}/man1/dcraw.1"
+done
+
+# Documentation
+cp -a %SOURCE1 %SOURCE2 %SOURCE7 %SOURCE100 .
+mv badpixels .badpixels
+
+%find_lang %{name} --with-man
%clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
%files
-%defattr(-,root,root)
-%doc README README.SuSE .badpixels dcwrap
-%_bindir/*
-%doc %_mandir/man*/*
+%defattr(-,root,root,-)
+%doc .badpixels README README.SuSE rawphoto.c
+%{_bindir}/clean_crw
+%{_bindir}/dcparse
+%{_bindir}/dcraw
+%{_bindir}/fuji_green
+%{_bindir}/fujiturn
+%{_bindir}/fujiturn16
+%doc %{_mandir}/man1/dcraw.1%{ext_man}
+
+%files lang -f %{name}.lang
+%defattr(-,root,root,-)
+%dir %{_mandir}/ca
+%dir %{_mandir}/ca/man1
+%dir %{_mandir}/cs
+%dir %{_mandir}/cs/man1
+%dir %{_mandir}/da
+%dir %{_mandir}/da/man1
+%dir %{_mandir}/eo
+%dir %{_mandir}/eo/man1
+%dir %{_mandir}/hu
+%dir %{_mandir}/hu/man1
+%dir %{_mandir}/pl
+%dir %{_mandir}/pl/man1
+%dir %{_mandir}/pt
+%dir %{_mandir}/pt/man1
+%if 0%{?suse_version} < 1130
+%dir %{_mandir}/ru
+%dir %{_mandir}/ru/man1
+%endif
+%dir %{_mandir}/sv
+%dir %{_mandir}/sv/man1
+%dir %{_mandir}/zh_CN
+%dir %{_mandir}/zh_CN/man1
+%dir %{_mandir}/zh_TW
+%dir %{_mandir}/zh_TW/man1
%changelog
++++++ README ++++++
++++ 932 lines (skipped)
++++ between dcraw/README
++++ and /mounts/work_src_done/STABLE/dcraw/README
++++++ clean_crw.c ++++++
/*
Because they are parsed from the end, Canon CRW files
become unreadable if garbage data is appended to them, as
often happens when files are recovered from damaged media.
This program truncates CRW files to the correct size.
Copyright 2005 by Dave Coffin, dcoffin a cybercom o net
Free for all uses.
$Revision$
$Date$
*/
#include
#include
#include
unsigned char *buffer;
int get4 (int i)
{
if (buffer[0] == 'I')
return buffer[i+3] << 24 | buffer[i+2] << 16 | buffer[i+1] << 8 | buffer[i];
else
return buffer[i] << 24 | buffer[i+1] << 16 | buffer[i+2] << 8 | buffer[i+3];
}
int main (int argc, char **argv)
{
int arg, size, end, diff, status=1;
unsigned char *fname;
FILE *fp;
if (argc == 1)
fprintf (stderr, "Usage: %s crw_0001.crw crw_0002.crw ...\n", argv[0]);
for (arg=1; arg < argc; arg++) {
status = 1;
fp = fopen (argv[arg], "rb");
fseek (fp, 0, SEEK_END);
size = ftell(fp);
buffer = malloc (size + strlen(argv[arg]) + 10);
if (!buffer) {
fprintf (stderr, "Cannot allocate memory!\n");
return 2;
}
fname = buffer + size;
sprintf (fname, "%s.clean", argv[arg]);
fseek (fp, 0, SEEK_SET);
fread (buffer, 1, size, fp);
fclose (fp);
if (strncmp (buffer, "II\x1a\0\0\0HEAPCCDR", 14) &&
strncmp (buffer, "MM\0\0\0\x1aHEAPCCDR", 14)) {
fprintf (stderr, "%s is not a CRW file!\n", argv[arg]);
free (buffer);
continue;
}
for (end=size; end > 0xa0000; end--) {
diff = end - get4(end-4);
if (diff > 50 && diff < 120 && diff % 10 == 2) {
status = 0;
break;
}
}
if (status)
fprintf (stderr, "Failed to clean %s\n", argv[arg]);
else {
if ((fp = fopen (fname, "wb"))) {
fprintf (stderr, "Writing %s\n", fname);
fwrite (buffer, 1, end, fp);
fclose (fp);
} else {
perror (fname);
status = 1;
}
}
free (buffer);
}
return status;
}
++++++ dcraw-omp.patch ++++++
--- /var/tmp/diff_new_pack.KYR4cP/_old 2011-03-28 10:16:48.000000000 +0200
+++ /var/tmp/diff_new_pack.KYR4cP/_new 2011-03-28 10:16:48.000000000 +0200
@@ -1,5 +1,5 @@
---- dcraw.c.orig 2010-05-02 01:23:33.000000000 +0200
-+++ dcraw.c 2010-05-02 01:24:00.000000000 +0200
+--- dcraw.c.orig 2011-01-29 09:43:38.000000000 +0200
++++ dcraw.c 2011-03-20 22:53:08.976000042 +0200
@@ -217,7 +217,7 @@
#define BAYER2(row,col) \
image[((row) >> shrink)*iwidth + ((col) >> shrink)][fc(row,col)]
@@ -75,7 +75,7 @@
{
if (fread (pixel, 2, count, ifp) < count) derror();
if ((order == 0x4949) == (ntohs(0x1234) == 0x1234))
-@@ -860,7 +860,7 @@
+@@ -846,7 +846,7 @@
return diff;
}
@@ -84,16 +84,16 @@
{
int col, c, diff, pred, spred=0;
ushort mark=0, *row[3];
-@@ -899,7 +899,7 @@
+@@ -885,7 +885,7 @@
return row[2];
}
-void CLASS lossless_jpeg_load_raw()
+static void CLASS lossless_jpeg_load_raw()
{
- int jwide, jrow, jcol, val, jidx, i, j, row=0, col=0, nblack=0;
- double dark[2] = { 0,0 };
-@@ -3710,6 +3710,8 @@
+ int jwide, jrow, jcol, val, jidx, c, i, j, row=0, col=0;
+ struct jhead jh;
+@@ -3713,6 +3713,8 @@
fputc ('\n', stderr);
}
size = iheight*iwidth;
@@ -102,7 +102,7 @@
for (i=0; i < size*4; i++) {
val = image[0][i];
if (!val) continue;
-@@ -3779,7 +3781,7 @@
+@@ -3782,7 +3784,7 @@
if (half_size) filters = 0;
}
@@ -111,7 +111,7 @@
{
unsigned row, col, y, x, f, c, sum[8];
-@@ -4067,6 +4069,7 @@
+@@ -4070,6 +4072,7 @@
lab = (short (*)[TS][TS][3])(buffer + 12*TS*TS);
homo = (char (*)[TS][TS]) (buffer + 24*TS*TS);
@@ -119,7 +119,7 @@
for (top=2; top < height-5; top += TS-6)
for (left=2; left < width-5; left += TS-6) {
-@@ -8120,8 +8123,14 @@
+@@ -8308,8 +8311,14 @@
_("Converting to %s colorspace...\n"), name[output_color-1]);
memset (histogram, 0, sizeof histogram);
@@ -127,7 +127,7 @@
- for (col=0; col < width; col++, img+=4) {
+
+#pragma omp parallel for \
-+ default(none) \
++ default(none) \
+ shared(height, width, image, raw_color, out_cam, colors, document_mode, filters, histogram) \
+ private(row, col, out, c, img)
+ for (row = 0; row < height; row++) {
@@ -136,7 +136,7 @@
if (!raw_color) {
out[0] = out[1] = out[2] = 0;
FORCC {
-@@ -8133,8 +8142,12 @@
+@@ -8321,8 +8330,12 @@
}
else if (document_mode)
img[0] = img[FC(row,col)];
++++++ dcraw.1.patch ++++++
--- dcraw.1.orig 2009-05-14 23:06:03.000000000 +0300
+++ dcraw.1 2011-03-21 22:00:59.283000022 +0200
@@ -10,7 +10,6 @@
.\" http://www.cybercom.net/~dcoffin
.\"
.TH dcraw 1 "May 14, 2009"
-.LO 1
.SH NAME
dcraw - command-line decoder for raw digital photos
.SH SYNOPSIS
++++++ fuji_green.c ++++++
/*
fuji_green -- read Fuji green pixels
$Revision: 1.2 $
$Date: 2006/03/01 01:46:47 $
*/
#include
#include
#include
#include
#include
#include
#define ushort UshORt
typedef unsigned char uchar;
typedef unsigned short ushort;
FILE *ifp;
short order;
char *ifname, make[64], model[64];
int data_offset, raw_height, raw_width, height, width;
int fuji_layout, fuji_secondary, use_secondary=0, verbose=0;
ushort *image;
void (*load_raw)();
float bright=1.0;
void write_ppm(FILE *);
void (*write_fun)(FILE *) = write_ppm;
jmp_buf failure;
#define CLASS
void CLASS merror (void *ptr, char *where)
{
if (ptr) return;
fprintf (stderr, "%s: Out of memory in %s\n", ifname, where);
longjmp (failure, 1);
}
ushort CLASS get2()
{
uchar a, b;
a = fgetc(ifp);
b = fgetc(ifp);
if (order == 0x4949) /* "II" means little-endian */
return a + (b << 8);
else /* "MM" means big-endian */
return (a << 8) + b;
}
int CLASS get4()
{
uchar a, b, c, d;
a = fgetc(ifp);
b = fgetc(ifp);
c = fgetc(ifp);
d = fgetc(ifp);
if (order == 0x4949)
return a + (b << 8) + (c << 16) + (d << 24);
else
return (a << 24) + (b << 16) + (c << 8) + d;
}
/*
Faster than calling get2() multiple times.
*/
void CLASS read_shorts (ushort *pixel, int count)
{
fread (pixel, 2, count, ifp);
if ((order == 0x4949) == (ntohs(0x1234) == 0x1234))
swab (pixel, pixel, count*2);
}
void CLASS fuji_load_raw()
{
ushort *pixel, *img;
int row, col;
pixel = calloc (raw_width, 2);
merror (pixel, "fuji_load_raw()");
for (row=0; row < height; row++)
if (fuji_layout) {
read_shorts (image+row*width, width);
fseek (ifp, (raw_width*2 - width)*2, SEEK_CUR);
} else {
read_shorts (pixel, raw_width);
for (img=image+row*width, col=0; col < width; col++)
img[col] = pixel[col*2+1];
}
free (pixel);
}
void CLASS parse_fuji (int offset)
{
unsigned entries, tag, len, save;
fseek (ifp, offset, SEEK_SET);
entries = get4();
if (entries > 255) return;
while (entries--) {
tag = get2();
len = get2();
save = ftell(ifp);
if (tag == 0x100) {
raw_height = get2();
raw_width = get2();
} else if (tag == 0x121) {
height = get2();
width = get2();
} else if (tag == 0x130)
fuji_layout = fgetc(ifp) >> 7;
fseek (ifp, save+len, SEEK_SET);
}
if (fuji_layout) {
height *= 2;
width /= 2;
}
}
void CLASS parse_tiff (int base)
{
int doff, entries, tag, type, len, save;
fseek (ifp, base, SEEK_SET);
order = get2();
get2(); /* Should be 42 for standard TIFF */
while ((doff = get4())) {
fseek (ifp, doff+base, SEEK_SET);
entries = get2();
while (entries--) {
tag = get2();
type = get2();
len = get4();
save = ftell(ifp)+4;
fseek (ifp, base+get4(), SEEK_SET);
switch (tag) {
case 0x10f: /* Make tag */
fgets (make, 64, ifp);
break;
case 0x110: /* Model tag */
fgets (model, 64, ifp);
}
fseek (ifp, save, SEEK_SET);
}
}
}
int CLASS identify()
{
char head[32], *c;
int thumb_offset;
make[0] = model[0] = 0;
data_offset = raw_height = raw_width = height = width = 0;
fuji_secondary = 0;
order = 0x4d4d;
fread (head, 1, 32, ifp);
if (memcmp (head, "FUJIFILM", 8)) return 1;
fseek (ifp, 84, SEEK_SET);
thumb_offset = get4();
fseek (ifp, 92, SEEK_SET);
parse_fuji (get4());
if (thumb_offset > 120) {
fseek (ifp, 120, SEEK_SET);
fuji_secondary = get4() && 1;
}
fseek (ifp, 100, SEEK_SET);
data_offset = get4();
parse_tiff (thumb_offset+12);
c = model + strlen(model); /* Remove trailing spaces */
while (*--c == ' ') *c = 0;
if (!strcmp(model,"FinePix S5100") ||
!strcmp(model,"FinePix S5500")) return 1;
load_raw = fuji_load_raw;
if (!strcmp(model+7,"S2Pro")) {
strcpy (model+7," S2Pro");
height = 2144;
width = 2880;
}
data_offset += (raw_height - height + 1)*raw_width - width;
if (fuji_secondary)
data_offset += use_secondary * ( strcmp(model+7," S3Pro")
? (raw_width *= 2) : raw_height*raw_width*2 );
data_offset += fuji_layout*raw_width*2;
width >>= !fuji_layout;
height >>= fuji_layout;
fseek (ifp, data_offset, SEEK_SET);
return 0;
}
void CLASS write_ppm (FILE *ofp)
{
int i, size, val, total, histogram[0x2000];
float white, r;
uchar lut[0x10000];
memset (histogram, 0, sizeof histogram);
size = width * height;
for (i = 0; i < size; i++)
histogram[image[i] >> 4]++;
i = size * 0.01; /* 99th percentile white point */
for (val=0x2000, total=0; --val; )
if ((total += histogram[val]) > i) break;
white = (val << 4) / bright;
for (i=0; i < 0x10000; i++) {
r = i / white;
val = (r <= 0.018 ? r*4.5 : pow(r,0.45)*1.099-0.099) * 256;
if (val > 255) val = 255;
lut[i] = val;
}
fprintf (ofp, "P5\n%d %d\n255\n", width, height);
for (i=0; i < size; i++)
fputc (lut[image[i]], ofp);
}
void CLASS write_raw16 (FILE *ofp)
{
if (ntohs(0x1234) != 0x1234)
swab (image, image, width*height*2);
fwrite (image, width*height, 2, ofp);
}
void CLASS write_ppm16 (FILE *ofp)
{
fprintf (ofp, "P5\n%d %d\n%d\n", width, height, 65535);
write_raw16 (ofp);
}
void CLASS write_psd (FILE *ofp)
{
char head[] = {
'8','B','P','S', /* signature */
0,1,0,0,0,0,0,0, /* version and reserved */
0,1, /* number of channels */
0,0,0,0, /* height, big-endian */
0,0,0,0, /* width, big-endian */
0,16, /* 16-bit color */
0,1, /* mode (1=grey, 3=rgb) */
0,0,0,0, /* color mode data */
0,0,0,0, /* image resources */
0,0,0,0, /* layer/mask info */
0,0 }; /* no compression */
int hw[2];
hw[0] = htonl(height*2); /* write the header */
hw[1] = htonl(width*2);
memcpy (head+14, hw, sizeof hw);
fwrite (head, 40, 1, ofp);
write_raw16 (ofp);
}
int CLASS main (int argc, char **argv)
{
int arg, status=0;
int identify_only=0, write_to_stdout=0;
char opt, *ofname, *cp;
const char *write_ext = ".pgm";
FILE *ofp = stdout;
if (argc == 1) {
fprintf (stderr,
"\nFuji Green channel output"
"\nby Dave Coffin, dcoffin a cybercom o net"
"\n\nUsage: %s [options] file1 file2 ...\n"
"\nValid options:"
"\n-v Print verbose messages"
"\n-c Write image data to standard output"
"\n-i Identify files without decoding them"
"\n-s Use secondary pixels if available"
"\n-b <num> Set brightness (default = 1.0)"
"\n-2 Write 8-bit non-linear PGM (default)"
"\n-4 Write 16-bit linear PGM"
"\n-3 Write 16-bit linear PSD (Adobe Photoshop)"
"\n\n", argv[0]);
return 1;
}
argv[argc] = "";
for (arg=1; argv[arg][0] == '-'; ) {
opt = argv[arg++][1];
if (strchr ("b", opt) && !isdigit(argv[arg][0])) {
fprintf (stderr, "\"-%c\" requires a numeric argument.\n", opt);
return 1;
}
switch (opt) {
case 'v': verbose = 1; break;
case 'i': identify_only = 1; break;
case 'c': write_to_stdout = 1; break;
case 's': use_secondary = 1; break;
case 'b': bright = atof(argv[arg++]); break;
case '2': write_fun = write_ppm; break;
case '4': write_fun = write_ppm16; break;
case '3': write_fun = write_psd; write_ext = ".psd"; break;
default:
fprintf (stderr, "Unknown option \"-%c\".\n", opt);
return 1;
}
}
if (arg == argc) {
fprintf (stderr, "No files to process.\n");
return 1;
}
if (write_to_stdout) {
if (isatty(1)) {
fprintf (stderr, "Will not write an image to the terminal!\n");
return 1;
}
#if defined(WIN32) || defined(DJGPP)
if (setmode(1,O_BINARY) < 0) {
perror("setmode()");
return 1;
}
#endif
}
for ( ; arg < argc; arg++) {
status = 1;
image = NULL;
if (setjmp (failure)) {
if (fileno(ifp) > 2) fclose (ifp);
if (fileno(ofp) > 2) fclose (ofp);
if (image) free (image);
status = 1;
continue;
}
ifname = argv[arg];
if (!(ifp = fopen (ifname, "rb"))) {
perror (ifname);
continue;
}
if ((status = identify())) {
fprintf (stderr, "%s: unsupported file format.\n", ifname);
fclose (ifp);
continue;
}
if (identify_only) {
fprintf (stderr, "%s is a %s %s image.\n", ifname, make, model);
fclose (ifp);
continue;
}
image = calloc (height * width, sizeof *image);
merror (image, "main()");
if (verbose)
fprintf (stderr,
"Loading %s %s image from %s...\n", make, model, ifname);
(*load_raw)();
fclose (ifp);
ofname = malloc (strlen(ifname) + 16);
merror (ofname, "main()");
if (write_to_stdout)
strcpy (ofname, "standard output");
else {
strcpy (ofname, ifname);
if ((cp = strrchr (ofname, '.'))) *cp = 0;
strcat (ofname, write_ext);
ofp = fopen (ofname, "wb");
if (!ofp) {
status = 1;
perror (ofname);
goto cleanup;
}
}
if (verbose)
fprintf (stderr, "Writing data to %s...\n", ofname);
(*write_fun)(ofp);
if (ofp != stdout)
fclose (ofp);
cleanup:
free (ofname);
free (image);
}
return status;
}
++++++ fuji_green.c_fix_gcc_warnings.patch ++++++
--- fuji_green.c.orig 2006-03-01 03:46:47.000000000 +0200
+++ fuji_green.c 2011-03-22 21:26:43.871000023 +0200
@@ -11,6 +11,8 @@
#include
#include
#include
+#include
+#include
#define ushort UshORt
typedef unsigned char uchar;
++++++ parse.c ++++++
--- /var/tmp/diff_new_pack.KYR4cP/_old 2011-03-28 10:16:48.000000000 +0200
+++ /var/tmp/diff_new_pack.KYR4cP/_new 2011-03-28 10:16:48.000000000 +0200
@@ -1,12 +1,12 @@
/*
Raw Photo Parser
- Copyright 2004-2006 by Dave Coffin, dcoffin a cybercom o net
+ Copyright 2004-2010 by Dave Coffin, dcoffin a cybercom o net
This program displays raw metadata for all raw photo formats.
It is free for all uses.
- $Revision: 1.69 $
- $Date: 2009/08/28 22:52:20 $
+ $Revision: 1.72 $
+ $Date: 2010/12/17 03:16:26 $
*/
#include
@@ -235,12 +235,15 @@
fseek (ifp, -2, SEEK_CUR);
else if (!strcmp (buf,"AOC"))
fseek (ifp, -4, SEEK_CUR);
- else
+ else {
fseek (ifp, -10, SEEK_CUR);
+ if (!strncmp(make,"SAMSUNG",7))
+ base = ftell(ifp);
+ }
entries = get2();
if (entries > 127) return;
- puts(" MakerNote:");
+ printf ("%*sMakerNote:\n", level*2-2, "");
while (entries--) {
save = ftell(ifp);
tag = get2();
@@ -285,7 +288,7 @@
{
int entries, tag, type, count, save;
- puts("EXIF table:");
+ printf ("%*sEXIF table:\n", level*2-2, "");
entries = get2();
while (entries--) {
save = ftell(ifp);
@@ -300,6 +303,20 @@
}
void parse_mos(int level);
+void parse_minolta (int base);
+void parse_tiff (int base, int level);
+
+void parse_thumb (int base, int level)
+{
+ int i=order;
+ order = 0x4d4d;
+ fseek (ifp, base, SEEK_SET);
+ if (get4()==0xffd8ffe1 && get2() && get4()==0x45786966 && !get2()) {
+ printf ("%*sEmbedded JPEG:\n", level*2, "");
+ parse_tiff (ftell(ifp), level+1);
+ }
+ order = i;
+}
void sony_decrypt (unsigned *data, int len, int start, int key)
{
@@ -334,17 +351,18 @@
slen = count;
if (slen > 128) slen = 128;
tiff_dump (base, tag, type, count, level);
+ if (type == 13) tag = 0x14a;
switch (tag) {
- case 0x10f: /* Make tag */
+ case 271: /* Make tag */
fgets (make, slen, ifp);
break;
- case 0x110: /* Model tag */
+ case 272: /* Model tag */
fgets (model, slen, ifp);
break;
case 33405: /* Model2 tag */
fgets (model2, slen, ifp);
break;
- case 0x14a: /* SubIFD tag */
+ case 330: /* SubIFD tag */
save2 = ftell(ifp);
for (i=0; i < count; i++) {
printf ("SubIFD #%d:\n", i+1);
@@ -353,9 +371,19 @@
parse_tiff_ifd (base, level+1);
}
break;
+ case 273: /* StripOffset */
+ case 513: /* JpegIFOffset */
+ case 61447:
+ fseek (ifp, get4()+base, SEEK_SET);
+ case 46:
+ parse_thumb (ftell(ifp), level);
+ break;
case 29184: sony_offset = get4(); break;
case 29185: sony_length = get4(); break;
case 29217: sony_key = get4(); break;
+ case 29264:
+ parse_minolta (ftell(ifp));
+ break;
case 33424:
case 65024:
puts("Kodak private data:");
@@ -379,16 +407,16 @@
save2 = ftell(ifp);
order = get2();
fseek (ifp, save2 + (get2(),get4()), SEEK_SET);
- parse_tiff_ifd (save2, level+1);
+ parse_tiff_ifd (save2, level+1);
order = i;
break;
case 50706:
is_dng = 1;
break;
case 50740:
- if (count != 4 || type != 1) break;
- puts("Sony SR2 private IFD:");
- fseek (ifp, get4()+base, SEEK_SET);
+ if (is_dng) break;
+ parse_minolta (i = get4()+base);
+ fseek (ifp, i, SEEK_SET);
parse_tiff_ifd (base, level+1);
}
fseek (ifp, save+12, SEEK_SET);
@@ -414,7 +442,7 @@
/*
Parse a TIFF file looking for camera model and decompress offsets.
*/
-void parse_tiff (int base)
+void parse_tiff (int base, int level)
{
int doff, ifd=0;
@@ -424,25 +452,31 @@
get2();
while ((doff = get4())) {
fseek (ifp, doff+base, SEEK_SET);
- printf ("IFD #%d:\n", ifd++);
- if (parse_tiff_ifd (base, 0)) break;
+ printf ("%*sIFD #%d:\n", level*2, "", ifd++);
+ if (parse_tiff_ifd (base, level)) break;
}
}
-void parse_minolta()
+void parse_minolta (int base)
{
- int data_offset, save, tag, len;
+ unsigned offset, save, len, j;
+ char tag[4];
- fseek (ifp, 4, SEEK_SET);
- data_offset = get4() + 8;
- while ((save=ftell(ifp)) < data_offset) {
- tag = get4();
+ fseek (ifp, base, SEEK_SET);
+ if (fgetc(ifp) || fgetc(ifp)-'M' || fgetc(ifp)-'R') return;
+ order = fgetc(ifp) * 0x101;
+ offset = base + get4() + 8;
+ while ((save=ftell(ifp)) < offset) {
+ fread (tag, 1, 4, ifp);
len = get4();
- printf ("Tag %c%c%c offset %06x length %06x\n",
- tag>>16, tag>>8, tag, save, len);
- switch (tag) {
- case 0x545457: /* TTW */
- parse_tiff (ftell(ifp));
+ printf ("Minolta tag %3.3s offset %06x length %06x", tag+1, save, len);
+ if (!strncmp (tag+1,"TTW",3)) {
+ putchar ('\n');
+ parse_tiff (ftell(ifp),0);
+ } else {
+ for (j = 0; j < len/2 && j < 128; j++)
+ printf ("%c%04x",(j & 15) || len < 9 ? ' ':'\n', get2());
+ putchar ('\n');
}
fseek (ifp, save+len+8, SEEK_SET);
}
@@ -542,7 +576,7 @@
hlen = get4();
if (get4() == 0x48454150) /* "HEAP" */
parse_ciff (save+hlen, len-hlen, 0);
- parse_tiff (save+6);
+ parse_tiff (save+6,0);
fseek (ifp, save+len, SEEK_SET);
}
return 1;
@@ -957,24 +991,26 @@
if ((cp = memmem (head, 32, "MMMM", 4)) ||
(cp = memmem (head, 32, "IIII", 4))) {
parse_phase_one (cp-head);
- if (cp-head) parse_tiff (0);
+ if (cp-head) parse_tiff (0,0);
} else if (order == 0x4949 || order == 0x4d4d) {
if (!memcmp(head+6,"HEAPCCDR",8)) {
parse_ciff (hlen, fsize - hlen, 0);
fseek (ifp, hlen, SEEK_SET);
} else
- parse_tiff (0);
+ parse_tiff (0,0);
} else if (!memcmp (head,"NDF0",4)) {
- parse_tiff (12);
+ parse_tiff (12,0);
} else if (!memcmp (head,"\0MRM",4)) {
- parse_minolta();
+ parse_minolta (0);
} else if (!memcmp (head,"FUJIFILM",8)) {
fseek (ifp, 84, SEEK_SET);
toff = get4();
tlen = get4();
parse_fuji (92);
if (toff > 120) parse_fuji (120);
- parse_tiff (toff+12);
+ fseek (ifp, 100, SEEK_SET);
+ parse_tiff (get4(),0);
+ parse_thumb (toff,0);
} else if (!memcmp (head,"RIFF",4)) {
fseek (ifp, 0, SEEK_SET);
parse_riff(0);
++++++ rawphoto.c ++++++
/*
Raw photo loader plugin for The GIMP
by Dave Coffin at cybercom dot net, user dcoffin
http://www.cybercom.net/~dcoffin/
$Revision: 1.32 $
$Date: 2008/09/16 05:41:39 $
This code is licensed under the same terms as The GIMP.
To simplify maintenance, it calls my command-line "dcraw"
program to do the actual decoding.
To install locally:
gimptool --install rawphoto.c
To install globally:
gimptool --install-admin rawphoto.c
To build without installing:
gcc -o rawphoto rawphoto.c `gtk-config --cflags --libs` -lgimp -lgimpui
*/
#include
#include
#include
#include
#include
#include
#if GIMP_CHECK_VERSION(1,3,2)
#define GimpRunModeType GimpRunMode
#endif
#if GIMP_CHECK_VERSION(1,3,17)
#define RAWPHOTO_CONST const
#else
#define RAWPHOTO_CONST
#endif
#include
#include
#define _(String) gettext(String)
#define PLUG_IN_VERSION "1.1.20 - 16 September 2008"
static void query(void);
static void run(RAWPHOTO_CONST gchar *name,
gint nparams,
RAWPHOTO_CONST GimpParam *param,
gint *nreturn_vals,
GimpParam **return_vals);
static gint load_dialog (gchar *name);
static gint32 load_image (gchar *filename);
GimpPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_procedure */
NULL, /* quit_procedure */
query, /* query_procedure */
run, /* run_procedure */
};
static struct {
gboolean check_val[6];
gfloat spin_val[2];
} cfg = {
{ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE },
{ 1, 0 }
};
MAIN ()
static void query (void)
{
static GimpParamDef load_args[] =
{
{ GIMP_PDB_INT32, "run_mode", "Interactive, non-interactive" },
{ GIMP_PDB_STRING, "filename", "The name of the file to load" },
{ GIMP_PDB_STRING, "raw_filename", "The name of the file to load" },
};
static GimpParamDef load_return_vals[] =
{
{ GIMP_PDB_IMAGE, "image", "Output image" },
};
static gint num_load_args =
sizeof load_args / sizeof load_args[0];
static gint num_load_return_vals =
sizeof load_return_vals / sizeof load_return_vals[0];
gimp_install_procedure ("file_rawphoto_load",
"Loads raw digital camera files",
"This plug-in loads raw digital camera files.",
"Dave Coffin at cybercom dot net, user dcoffin",
"Copyright 2003-2008 by Dave Coffin",
PLUG_IN_VERSION,
"<Load>/rawphoto",
NULL,
GIMP_PLUGIN,
num_load_args,
num_load_return_vals,
load_args,
load_return_vals);
gimp_register_load_handler ("file_rawphoto_load",
"3fr,arw,bay,bmq,cine,cr2,crw,cs1,dc2,dcr,dng,erf,fff,hdr,ia,jpg,k25,kc2,kdc,mdc,mef,mos,mrw,nef,nrw,orf,pef,pxn,qtk,raf,raw,rdc,rw2,sr2,srf,sti,tif,x3f", "");
}
static void run (RAWPHOTO_CONST gchar *name,
gint nparams,
RAWPHOTO_CONST GimpParam *param,
gint *nreturn_vals,
GimpParam **return_vals)
{
static GimpParam values[2];
GimpRunModeType run_mode;
GimpPDBStatusType status;
gint32 image_id = -1;
gchar *command, *fname;
int stat;
*nreturn_vals = 1;
*return_vals = values;
status = GIMP_PDB_CALLING_ERROR;
if (strcmp (name, "file_rawphoto_load")) goto done;
status = GIMP_PDB_EXECUTION_ERROR;
fname = param[1].data.d_string;
command = g_malloc (strlen(fname)+20);
if (!command) goto done;
/*
Is the file really a raw photo? If not, try loading it
as a regular JPEG or TIFF.
*/
sprintf (command, "dcraw -i '%s'\n",fname);
fputs (command, stderr);
stat = system (command);
g_free (command);
if (stat) {
if (stat > 0x200)
g_message (_("The \"rawphoto\" plugin won't work because "
"there is no \"dcraw\" executable in your path."));
if (!strcasecmp (fname + strlen(fname) - 4, ".jpg"))
*return_vals = gimp_run_procedure2
("file_jpeg_load", nreturn_vals, nparams, param);
else
*return_vals = gimp_run_procedure2
("file_tiff_load", nreturn_vals, nparams, param);
return;
}
gimp_get_data ("plug_in_rawphoto", &cfg);
status = GIMP_PDB_CANCEL;
run_mode = param[0].data.d_int32;
if (run_mode == GIMP_RUN_INTERACTIVE)
if (!load_dialog (param[1].data.d_string)) goto done;
status = GIMP_PDB_EXECUTION_ERROR;
image_id = load_image (param[1].data.d_string);
if (image_id == -1) goto done;
*nreturn_vals = 2;
values[1].type = GIMP_PDB_IMAGE;
values[1].data.d_image = image_id;
status = GIMP_PDB_SUCCESS;
gimp_set_data ("plug_in_rawphoto", &cfg, sizeof cfg);
done:
values[0].type = GIMP_PDB_STATUS;
values[0].data.d_status = status;
}
static gint32 load_image (gchar *filename)
{
int tile_height, depth, width, height, row, nrows;
FILE *pfp;
gint32 image, layer;
GimpDrawable *drawable;
GimpPixelRgn pixel_region;
guchar *pixel;
char *command, nl;
setlocale (LC_NUMERIC, "C");
command = g_malloc (strlen(filename)+100);
if (!command) return -1;
sprintf (command,
"dcraw -c%s%s%s%s%s%s -b %0.2f -H %d '%s'\n",
cfg.check_val[0] ? " -q 0":"",
cfg.check_val[1] ? " -h":"",
cfg.check_val[2] ? " -f":"",
cfg.check_val[3] ? " -d":"",
cfg.check_val[4] ? " -a":"",
cfg.check_val[5] ? " -w":"",
cfg.spin_val[0], (int) cfg.spin_val[1],
filename );
fputs (command, stderr);
pfp = popen (command, "r");
g_free (command);
if (!pfp) {
perror ("dcraw");
return -1;
}
if (fscanf (pfp, "P%d %d %d 255%c", &depth, &width, &height, &nl) != 4
|| (depth-5)/2 ) {
pclose (pfp);
g_message ("Not a raw digital camera image.\n");
return -1;
}
depth = depth*2 - 9;
image = gimp_image_new (width, height, depth == 3 ? GIMP_RGB : GIMP_GRAY);
if (image == -1) {
pclose (pfp);
g_message ("Can't allocate new image.\n");
return -1;
}
gimp_image_set_filename (image, filename);
/* Create the "background" layer to hold the image... */
layer = gimp_layer_new (image, "Background", width, height,
depth == 3 ? GIMP_RGB_IMAGE : GIMP_GRAY_IMAGE,
100, GIMP_NORMAL_MODE);
gimp_image_add_layer (image, layer, 0);
/* Get the drawable and set the pixel region for our load... */
drawable = gimp_drawable_get (layer);
gimp_pixel_rgn_init (&pixel_region, drawable, 0, 0, drawable->width,
drawable->height, TRUE, FALSE);
/* Temporary buffers... */
tile_height = gimp_tile_height();
pixel = g_new (guchar, tile_height * width * depth);
/* Load the image... */
for (row = 0; row < height; row += tile_height) {
nrows = height - row;
if (nrows > tile_height)
nrows = tile_height;
fread (pixel, width * depth, nrows, pfp);
gimp_pixel_rgn_set_rect (&pixel_region, pixel, 0, row, width, nrows);
}
pclose (pfp);
g_free (pixel);
gimp_drawable_flush (drawable);
gimp_drawable_detach (drawable);
return image;
}
#if !GIMP_CHECK_VERSION(1,3,23)
/* this is set to true after OK click in any dialog */
gboolean result = FALSE;
static void callback_ok (GtkWidget * widget, gpointer data)
{
result = TRUE;
gtk_widget_destroy (GTK_WIDGET (data));
}
#endif
#define NCHECK (sizeof cfg.check_val / sizeof (gboolean))
gint load_dialog (gchar * name)
{
GtkWidget *dialog;
GtkWidget *table;
GtkObject *adj;
GtkWidget *widget;
int i;
static const char *label[9] =
{ "Quick interpolation", "Half-size interpolation",
"Four color interpolation", "Grayscale document",
"Automatic white balance", "Camera white balance",
"Brightness", "Highlight mode" };
gimp_ui_init ("rawphoto", TRUE);
dialog = gimp_dialog_new (_("Raw Photo Loader " PLUG_IN_VERSION), "rawphoto",
#if !GIMP_CHECK_VERSION(1,3,23)
gimp_standard_help_func, "rawphoto",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("OK"), callback_ok, NULL, NULL, NULL, TRUE,
FALSE, _("Cancel"), gtk_widget_destroy, NULL,
1, NULL, FALSE, TRUE, NULL);
gtk_signal_connect
(GTK_OBJECT(dialog), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
#else
NULL, 0,
gimp_standard_help_func, "rawphoto",
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
#endif
table = gtk_table_new (9, 2, FALSE);
gtk_container_set_border_width (GTK_CONTAINER(table), 6);
gtk_box_pack_start
(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, FALSE, FALSE, 0);
gtk_widget_show (table);
for (i=0; i < NCHECK; i++) {
widget = gtk_check_button_new_with_label
(_(label[i]));
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (widget), cfg.check_val[i]);
gtk_table_attach
(GTK_TABLE(table), widget, 0, 2, i, i+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_signal_connect (GTK_OBJECT (widget), "toggled",
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
&cfg.check_val[i]);
gtk_widget_show (widget);
}
for (i=NCHECK; i < NCHECK+2; i++) {
widget = gtk_label_new (_(label[i]));
gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
gtk_misc_set_padding (GTK_MISC (widget), 10, 0);
gtk_table_attach
(GTK_TABLE(table), widget, 0, 1, i, i+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (widget);
if (i == NCHECK+1)
widget = gimp_spin_button_new
(&adj, cfg.spin_val[i-NCHECK], 0, 9, 1, 9, 1, 1, 0);
else
widget = gimp_spin_button_new
(&adj, cfg.spin_val[i-NCHECK], 0.01, 4.0, 0.01, 0.1, 0.1, 0.1, 2);
gtk_table_attach
(GTK_TABLE(table), widget, 1, 2, i, i+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
GTK_SIGNAL_FUNC (gimp_float_adjustment_update),
&cfg.spin_val[i-NCHECK]);
gtk_widget_show (widget);
}
gtk_widget_show (dialog);
#if !GIMP_CHECK_VERSION(1,3,23)
gtk_main();
gdk_flush();
return result;
#else
i = gimp_dialog_run (GIMP_DIALOG (dialog));
gtk_widget_destroy (dialog);
return i == GTK_RESPONSE_OK;
#endif
}
++++++ update_dcraw ++++++
--- /var/tmp/diff_new_pack.KYR4cP/_old 2011-03-28 10:16:48.000000000 +0200
+++ /var/tmp/diff_new_pack.KYR4cP/_new 2011-03-28 10:16:48.000000000 +0200
@@ -1,20 +1,19 @@
#! /bin/sh
-# Call this script to update dcraw to latest version.
+# Call this script to update dcraw files (except the main package) to latest version.
-wget -N http://www.cybercom.net/~dcoffin/dcraw/dcraw.1
wget -N http://www.cybercom.net/~dcoffin/dcraw/parse.c
wget -N http://www.cybercom.net/~dcoffin/dcraw/fujiturn.c
-wget -N http://www.cybercom.net/~dcoffin/dcraw/dcwrap
-wget -N http://www.cybercom.net/~dcoffin/dcraw/dcraw.c
wget -N http://www.cybercom.net/~dcoffin/dcraw/.badpixels
+wget -N http://www.cybercom.net/~dcoffin/dcraw/rawphoto.c
+wget -N http://www.cybercom.net/~dcoffin/dcraw/clean_crw.c
+wget -N http://www.cybercom.net/~dcoffin/dcraw/fuji_green.c
mv .badpixels badpixels
-( URL="http://www.cybercom.net/~dcoffin/dcraw/" ; echo -e "$URL:\n" ; LC_ALL=C lynx -dump "$URL" | sed '1d;3,4d' ) >README
+( URL="http://www.cybercom.net/~dcoffin/dcraw/" ; echo -e "$URL:\n" ; LC_ALL=C lynx -display_charset=utf-8 -dump "$URL" | sed '1d;3,4d' ) >README
wget -N http://www.cybercom.net/~dcoffin/dcraw/RCS/dcraw.c,v
rlog dcraw.c >dcraw.log
echo
echo "Please check, whether packaged file list is up to date."
-echo "Don't forget to change the version in dcraw.spec." $(head -n 1 dcraw.c,v)
echo "You can look at dcraw.log for the complete change log."
echo "Before submit, please call:"
echo "rm dcraw.c,v dcraw.log"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org