AWARE SYSTEMS
TIFF and LibTiff Mail List Archive

2000.03.27 02:36 "stderr redirection", by Byron Young

I successfully compiled the libtiff distribution using nmake, cl, link for a Win32 system running W98. In the makefile (attached to this email), I selected

WINMODE = -DTIF_PLATFORM_CONSOLE

Attempting to redirect stderr to a file, I reopened the stderr file using

Begin WinMain
FILE * fp;
char buf[128];
char tm[16];
char dt[16];

fp = freopen("stderr.txt","w+",stderr);
_strtime(tm);
_strdate(dt);
sprintf(buf,"Starting Program %s %s\n",tm,dt);
fputs(buf,stderr);

..
..
..
fclose(fp);
end of WinMain

The stderr.txt file is opened, and the date and time are written to stderr. According to the html manual,

TIFFError invokes the library-wide error handling function to (normally) write an error message to the stderr.

However, when errors occur while a TIFF libtiff function is called, the error output is NOT written to stderr.txt.

When I rebuild the libtiff distribution with WINMODE = -DTIF_PLATFORM_WINDOWED

Each error that the TIFF libtiff function generates correctly displays a message box stating the error.

QUESTION:

How do I tell the TIFF libtiff functions (compiled with WINMODE = -DTIF_PLATFORM_CONSOLE) to use the freopen stderr file?

Thanks,

Byron Young
bkyoung@jps.net

#
#       Simple MS VC++ Makefile
#
#       To build:
#       C:\libtiff\libtiff> nmake /f makefile.vc all

#

# Select _CONSOLE to build a library which reports errors to stderr, or # _WINDOWED to build such that errors are reported via MessageBox().

#
WINMODE = -DTIF_PLATFORM_CONSOLE
#WINMODE = -DTIF_PLATFORM_WINDOWED

CC = cl
INCL = -I.
LIBS = user32.lib
CFLAGS = /nologo /W3 $(INCL) $(WINMODE) /c /G4 /LD /Zi

OBJ     = \
        tif_aux.obj \
        tif_close.obj \
        tif_codec.obj \
        tif_compress.obj \
        tif_dir.obj \
        tif_dirinfo.obj \
        tif_dirread.obj \
        tif_dirwrite.obj \
        tif_dumpmode.obj \
        tif_error.obj \
        tif_fax3.obj \
        fax3sm.obj \
        tif_getimage.obj \
        tif_jpeg.obj \
        tif_flush.obj \
        tif_luv.obj \
        tif_lzw.obj \
        tif_next.obj \
        tif_open.obj \
        tif_packbits.obj \
        tif_pixarlog.obj \
        tif_predict.obj \
        tif_print.obj \
        tif_read.obj \
        tif_swab.obj \
        tif_strip.obj \
        tif_thunder.obj \
        tif_tile.obj \
        tif_win32.obj \
        tif_version.obj \
        tif_warning.obj \
        tif_write.obj \
        tif_zip.obj

VERSION = ..\VERSION
ALPHA = ..\dist\tiff.alpha

default: libtiff.lib

all:    libtiff.lib libtiff.dll

libtiff.lib: $(OBJ)
        lib /out:libtiff.lib $(OBJ)

libtiff.dll: $(OBJ)
        link /machine:i386 /dll /def:libtiff.def /out:libtiff.dll \
                $(OBJ) $(LIBS)

version.h: $(VERSION) $(ALPHA) mkversion.c
        $(CC) mkversion.c
        del version.h
        .\mkversion.exe -v $(VERSION) -a $(ALPHA) version.h

clean:
        del *.obj *.lib libtiff.dll

tif_version.obj: version.h