You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2011/06/28 05:11:16 UTC
[lucy-commits] svn commit: r1140418 -
/incubator/lucy/trunk/charmonizer/src/Charmonizer/Probe/DirManip.c
Author: marvin
Date: Tue Jun 28 03:11:15 2011
New Revision: 1140418
URL: http://svn.apache.org/viewvc?rev=1140418&view=rev
Log:
LUCY-168 Rework DIR_SEP derivation.
Use symbol and header detection rather than probing to determine the determine
the directory separator character. (The probing would often produce poor
results because of hack fixes that allow "/" to work under Windows or "\\"
to work under Cygwin.)
Modified:
incubator/lucy/trunk/charmonizer/src/Charmonizer/Probe/DirManip.c
Modified: incubator/lucy/trunk/charmonizer/src/Charmonizer/Probe/DirManip.c
URL: http://svn.apache.org/viewvc/incubator/lucy/trunk/charmonizer/src/Charmonizer/Probe/DirManip.c?rev=1140418&r1=1140417&r2=1140418&view=diff
==============================================================================
--- incubator/lucy/trunk/charmonizer/src/Charmonizer/Probe/DirManip.c (original)
+++ incubator/lucy/trunk/charmonizer/src/Charmonizer/Probe/DirManip.c Tue Jun 28 03:11:15 2011
@@ -17,6 +17,7 @@
#define CHAZ_USE_SHORT_NAMES
#include "Charmonizer/Core/ConfWriter.h"
+#include "Charmonizer/Core/Compiler.h"
#include "Charmonizer/Core/Dir.h"
#include "Charmonizer/Core/Util.h"
#include "Charmonizer/Core/HeaderChecker.h"
@@ -25,6 +26,12 @@
#include <stdio.h>
#include <stdlib.h>
+static const char cygwin_code[] =
+ QUOTE(#ifndef __CYGWIN__ )
+ QUOTE( #error "Not Cygwin" )
+ QUOTE(#endif )
+ QUOTE(int main() { return 0; } );
+
void
DirManip_run(void) {
FILE *f;
@@ -77,44 +84,17 @@ DirManip_run(void) {
ConfWriter_append_conf("#define CHY_MAKEDIR_MODE_IGNORED 1\n");
}
- /* Create a directory. */
- Dir_mkdir("_charm_test_dir_orig");
-
- /* Try to create files under the new directory. */
- if ((f = fopen("_charm_test_dir_orig\\backslash", "w")) != NULL) {
- fclose(f);
- }
- if ((f = fopen("_charm_test_dir_orig/slash", "w")) != NULL) {
- fclose(f);
+ if (CC_test_compile(cygwin_code, strlen(cygwin_code))) {
+ strcpy(dir_sep, "/");
}
-
- /* Rename the directory, then see which file we can get to. */
- rename("_charm_test_dir_orig", "_charm_test_dir_mod");
- if ((f = fopen("_charm_test_dir_mod\\backslash", "r")) != NULL) {
- fclose(f);
+ else if (HeadCheck_check_header("windows.h")) {
strcpy(dir_sep, "\\\\");
}
- else if ((f = fopen("_charm_test_dir_mod/slash", "r")) != NULL) {
- fclose(f);
- strcpy(dir_sep, "/");
- }
else {
- /* Punt based on OS. */
- #ifdef _WIN32
- strcpy(dir_sep, "\\\\");
- #else
strcpy(dir_sep, "/");
- #endif
}
- ConfWriter_append_conf("#define CHY_DIR_SEP \"%s\"\n", dir_sep);
- /* Clean up - delete all possible files without verifying. */
- remove("_charm_test_dir_mod/slash");
- remove("_charm_test_dir_mod\\backslash");
- remove("_charm_test_dir_orig/slash");
- remove("_charm_test_dir_orig\\backslash");
- Dir_rmdir("_charm_test_dir_orig");
- Dir_rmdir("_charm_test_dir_mod");
+ ConfWriter_append_conf("#define CHY_DIR_SEP \"%s\"\n", dir_sep);
/* See whether remove works on directories. */
Dir_mkdir("_charm_test_remove_me");