#define CHAZ_USE_SHORT_NAMES
#include "Charmonizer/Core/ModHandler.h"
#include "Charmonizer/Core/Util.h"
#include "Charmonizer/Probe/DirSep.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
static char mkdir_code[] = "\n"
" #include \"_charm.h\"\n"
" #include <sys/stat.h>\n"
" int main () {\n"
" Charm_Setup;\n"
" if (mkdir(\"_charm_test_dir_orig\", 0777) == 0) {\n"
" printf(\"1\");\n"
" }\n"
" return 0;\n"
" }\n"
"";
void
chaz_DirSep_run(void)
{
char *output;
size_t output_len;
char dir_sep[3];
chaz_bool_t dir_sep_is_valid = false;
START_RUN("DirSep");
/* create a directory */
output = capture_output(mkdir_code, strlen(mkdir_code), &output_len);
if (output != NULL && (strcmp(output, "1") == 0)) {
FILE *f;
/* clean up */
free(output);
/* 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);
/* rename the directory, and 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);
strcpy(dir_sep, "\\\\");
dir_sep_is_valid = true;
}
else if ( (f = fopen("_charm_test_dir_mod/slash", "r")) != NULL) {
fclose(f);
strcpy(dir_sep, "/");
dir_sep_is_valid = true;
}
}
/* 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");
remove("_charm_test_dir_orig");
remove("_charm_test_dir_mod");
if (dir_sep_is_valid) {
append_conf("#define CHY_DIR_SEP \"%s\"\n", dir_sep);
/* shorten */
START_SHORT_NAMES;
shorten_macro("DIR_SEP");
END_SHORT_NAMES;
}
END_RUN;
}
/* Copyright 2006-2007 Marvin Humphrey
*
* This program is free software; you can redistribute it and/or modify
* under the same terms as Perl itself.
*/