char* vt_env_fprefix() { static char* fprefix = NULL; char* tmp; if (! fprefix) { tmp = getenv("VT_FILE_PREFIX"); if (tmp != NULL && strlen(tmp) > 0) { vt_cntl_msg(2, "VT_FILE_PREFIX=%s", tmp); fprefix = replace_vars(tmp); } else { tmp = vt_env_apppath(); if (tmp != NULL && strlen(tmp) > 0) { fprefix = strip_dir(tmp); if (strlen(fprefix) >= 4 && (strcmp(fprefix+(strlen(fprefix)-4), ".out") == 0 || strcmp(fprefix+(strlen(fprefix)-4), ".exe") == 0)) { fprefix[strlen(fprefix)-4] = '\0'; } } else { fprefix = "a"; } } } return fprefix; }
int strip_file_or_dir(char *name) { struct stat sb; int ret = -1; ret = lstat(name, &sb); if (ret != 0) return 0; switch (sb.st_mode & S_IFMT) { case S_IFREG: ret = strip_prebind(name); break; case S_IFDIR: if (verbose > 0) printf("loading dir %s\n", name); ret = strip_dir(name); break; default: ; /* links and other files we skip */ ret = 0; } return ret; }
bool gen_xsds(string &excel, string &xsd_dir) { if(false == fileuitl::exist(excel)) { ECHO_ERR("´íÎó: %s ·¾¶²»´æÔÚ", excel.c_str()); return false; } if(false == fileuitl::exist(xsd_dir)) { ECHO_ERR("´íÎó: %s ·¾¶²»´æÔÚ", xsd_dir.c_str()); return false; } propunit_t unit; errvec_t errvec; bool ok = parseutil::parse_excel(excel, unit, errvec); if (!ok){ ECHO_ERR("´íÎó: %s ½âÎöÎļþʧ°Ü", xsd_dir.c_str()); proputil::echo_errvec(errvec); return false; } // proputil::parse(excel, unit, errvec); for(propdeclvec_t::iterator itr = unit.propdecls.begin(); itr != unit.propdecls.end(); ++itr) { propdecl_t &decl = *itr; string xsd = xsd_dir + "\\" + strip_ext(strip_dir(decl.filename)) + ".xsd"; gen_xsd(decl, xsd); } return true; }