This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: environment variables derived from TMPDIR


On Tue, 5 Aug 2008, Kurt Franke <Kurt-Franke@web.de> wrote:
Ralf Fassel <ralfixx <at> gmx.de> writes:
In a SHELL script I prepare a temp file to pass to some non-cygwin
program:

    # TMPDIR is set to c:/temp outside of cygwin
    # which translates to /cygdrive/c/temp inside cygwin
    # prepare input
    TMPFILE=$TMPDIR/foo.$$
    cat > "$TMPFILE" <<\EOF
    some stuff
    EOF
    # call program: error: no such file /cygdrive/c/temp/foo.1234
    # filename should be c:/temp/foo.1234
    external_program "$TMPFILE"

Now TMPFILE is passed to the external program using POSIX path
notation which it does not understand.

If possible I'd like to avoid using 'cygpath' in the script since it
should run on different platforms.

you may check if the cygpath usage is valid before do it:


is_CYGWIN=`uname | grep CYGWIN | wc -l`
if [ $is_CYGWIN -gt 0 ]
then
 TMPDIR=`cygpath -w $TMPDIR`
fi
# continue with your code here

My notion is in the vicinity of "duck typing" and "EAFP" ("Easier to Ask Forgiveness than Permission"). The best way to see whether cygpath can do what you want is to call cygpath to do what you want

    # I use /bin/cygpath so that I don't have to depend on PATH being
    # set correctly.
    if new_TMPDIR=`/bin/cygpath -w "$TMPDIR" 2>/dev/null`; then
        TMPDIR="$new_TMPDIR"
    fi
    unset new_TMPDIR   # I like to explicitly kill dead variables

much like it's common advice that, when you want to know whether a
file is readable at the start of using it in your program, you should
simply try to open it for reading and catch the error or exception if
it's not.

--
Tim McDaniel, tmcd@panix.com

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]