Yes, it's strange to have a boolean function that always return TRUE. This want_directory function just want to do a check of the path, if the path is not a directory, then it will print a warning. BTW, I have a mistake in my patch, the condition in want_directory should be
if (!is_directory(path) && fullwarn) warning("%s is not a directory", path); I miss the "!" in my patch. actually in the original code, because want_directory will always return true, the following lines in table.c (line 849 - line 886) is dead code. if (options[i].syntax == needs_directory #ifdef KEY || options[i].syntax == needs_directory_or_null #endif ) { fprintf(f, "\t} else if (!is_last_char(argv,argi)) {\n"); fprintf(f, "\t\tif (fullwarn) {\n"); fprintf(f, "\t\t\twarning(\"%%s does not refer to a valid directory\", option_name);\n"); fprintf(f, "\t\t}\n"); fprintf(f, "\t\toptargs = get_optarg(argv,argi);\n"); fprintf(f, "\t\tget_next_arg(argi);\n"); #ifdef KEY fprintf(f, "\t\treturn add_any_string_option(%s,optargs);\n", options[i].flag); #else fprintf(f, "\t\treturn add_string_option(%s,optargs);\n", options[i].flag); #endif fprintf(f, "\t\t/* NOTREACHED */\n"); } #ifdef KEY // Ignore %D? option if no dir arg is found by changing // them into -dummy. if (options[i].syntax == needs_directory_or_null) { fprintf(f, "\t} else {\n"); fprintf(f, "\t optargs = current_string(argv,argi);\n"); fprintf(f, "\t get_next_arg(argi);\n"); fprintf(f, "\t return O_dummy;\n"); } #endif if (options[i].syntax != needs_string && options[i].syntax != needs_string_or_dash ) { fprintf(f, "\t}\n"); } if (strlen(options[i].name) > 2) { fprintf(f, "\t}\n"); } On Thu, Dec 30, 2010 at 10:42 AM, David Coakley <dcoak...@gmail.com> wrote: > I will not have a chance to look closely until next week, but I have a > few minor complaints... we can always address these later if the bug > is blocking progress. > > The comment for want_directory() is exactly the same as the comment > for is_directory(). This looks like an error. > > Also, I think it is strange to have a boolean function that always > returns TRUE. Maybe the code generated by table.c should change > instead. > > -David Coakley / AMD Open Source Compiler Engineering > > On Wed, Dec 29, 2010 at 3:18 PM, Sun Chan <sun.c...@gmail.com> wrote: >> go ahead. >> Sun >> >> On Tue, Dec 28, 2010 at 11:31 PM, Wu Yongchong <wuyongch...@gmail.com> wrote: >>> Hi, David >>> >>> Could you please help review this patch >>> See https://bugs.open64.net/show_bug.cgi?id=709 >>> >>> In revision 3437 , the function want_directory has been remove >>> considering it's a dead function, but it's not true. This function >>> will always return TRUE no matter the path is a directory or not. >>> If it's replace with is_directory, the following situation will fail . >>> >>> There is no directory named libs >>> $ opencc -I ./libs test.c >>> opencc WARNING: unknown flag: -I >>> gcc: ./libs: No such file or directory >>> >>> >>> Here is the patch. >>> Index: osprey/driver/file_utils.c >>> =================================================================== >>> --- osprey/driver/file_utils.c (revision 3437) >>> +++ osprey/driver/file_utils.c (working copy) >>> @@ -163,6 +163,13 @@ >>> return FALSE; >>> } >>> >>> +boolean want_directory (char *path) >>> +{ >>> + if (is_directory(path) && fullwarn) >>> + warning("%s is not a directory", path); >>> + return TRUE; >>> +} >>> + >>> /* check if directory is writable */ >>> boolean >>> directory_is_writable (char *path) >>> Index: osprey/driver/file_utils.h >>> =================================================================== >>> --- osprey/driver/file_utils.h (revision 3437) >>> +++ osprey/driver/file_utils.h (working copy) >>> @@ -61,6 +61,9 @@ >>> /* check whether is a directory */ >>> extern boolean is_directory (char *path); >>> >>> +/* check whether is a directory */ >>> +extern boolean want_directory (char *path); >>> + >>> /* check whether directory is writable */ >>> extern boolean directory_is_writable (char *path); >>> >>> Index: osprey/driver/table.c >>> =================================================================== >>> --- osprey/driver/table.c (revision 3437) >>> +++ osprey/driver/table.c (working copy) >>> @@ -827,7 +827,7 @@ >>> || options[i].syntax == >>> needs_directory_or_null >>> #endif >>> ) { >>> - fprintf(f, "\tif >>> (is_directory(next_string(argv,argi))) {\n"); >>> + fprintf(f, "\tif >>> (want_directory(next_string(argv,argi))) {\n"); >>> } >>> fprintf(f, "\t\toptargs = get_optarg(argv, >>> argi);\n"); >>> if (options[i].syntax == needs_decimal) { >>> >>> >>> -- >>> yongchong >>> >>> ------------------------------------------------------------------------------ >>> Learn how Oracle Real Application Clusters (RAC) One Node allows customers >>> to consolidate database storage, standardize their database environment, >>> and, >>> should the need arise, upgrade to a full multi-node Oracle RAC database >>> without downtime or disruption >>> http://p.sf.net/sfu/oracle-sfdevnl >>> _______________________________________________ >>> Open64-devel mailing list >>> Open64-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/open64-devel >>> >> > -- yongchong ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel