fix problem with code that checks if temp file is needed, before it would compare...
authorJosh Coalson <jcoalson@users.sourceforce.net>
Tue, 10 Oct 2006 00:40:17 +0000 (00:40 +0000)
committerJosh Coalson <jcoalson@users.sourceforce.net>
Tue, 10 Oct 2006 00:40:17 +0000 (00:40 +0000)
src/flac/main.c

index 88a53b5..426fe27 100644 (file)
@@ -1777,9 +1777,10 @@ int encode_file(const char *infilename, FLAC__bool is_first_file, FLAC__bool is_
        common_options.debug.disable_fixed_subframes = option_values.debug.disable_fixed_subframes;
        common_options.debug.disable_verbatim_subframes = option_values.debug.disable_verbatim_subframes;
 
-       /* if infilename==outfilename, we need to write to a temporary file */
-       if(encode_infile != stdin && 0 == strcmp(infilename, outfilename)) { /*@@@@@@ BUG strcmp is not adequate to check if infilename and outfilename are the same file */
-               static const char *tmp_suffix = ".tmp";
+       /* if infilename and outfilename point to the same file, we need to write to a temporary file */
+       if(encode_infile != stdin && grabbag__file_are_same(infilename, outfilename)) {
+               static const char *tmp_suffix = ".tmp,fl-ac+en'c";
+               /*@@@ still a remote possibility that a file with this filename exists */
                if(0 == (internal_outfilename = malloc(strlen(outfilename)+strlen(tmp_suffix)+1))) {
                        flac__utils_printf(stderr, 1, "ERROR allocating memory for tempfile name\n");
                        return 1;