BOOL LogToDbName(const char *log_name, char *db_name, BOOL isAlt=FALSE) { char *fname=NULL; if (!GetFullPathNameU8(log_name, MAX_PATH_U8, db_name, &fname) || !fname) { return FALSE; } // char *ext = strchr(fname, '.'); // if (ext) { // if (!strcmpi(ext, ".db")) { // return FALSE; // } // } // else { // ext = fname + strlen(fname); // } // // strcpy(ext, ".db"); strcpy(fname, IPMSG_LOGDBNAME); return TRUE; }
Cfg::Cfg(Addr _nicAddr, int _portNo) { nicAddr = _nicAddr; portNo = _portNo; AbsenceHead = NULL; AbsenceStr = NULL; FindStr = NULL; int abs_ids[] = { IDS_DEFABSENCE1, IDS_DEFABSENCE2, IDS_DEFABSENCE3, IDS_DEFABSENCE4, IDS_DEFABSENCE5, IDS_DEFABSENCE6, IDS_DEFABSENCE7, IDS_DEFABSENCE8, 0 }; for (int i=0; abs_ids[i] && i < sizeof(DefaultAbsence) / sizeof(char *); i++) { DefaultAbsence[i] = GetLoadStrU8(abs_ids[i]); } int absh_ids[] = { IDS_DEFABSENCEHEAD1, IDS_DEFABSENCEHEAD2, IDS_DEFABSENCEHEAD3, IDS_DEFABSENCEHEAD4, IDS_DEFABSENCEHEAD5, IDS_DEFABSENCEHEAD6, IDS_DEFABSENCEHEAD7, IDS_DEFABSENCEHEAD8, 0 }; for (int i=0; absh_ids[i] && i < sizeof(DefaultAbsenceHead) / sizeof(char *); i++) { DefaultAbsenceHead[i] = GetLoadStrU8(absh_ids[i]); } char buf[MAX_PATH_U8], path[MAX_PATH_U8], *fname = NULL; GetModuleFileNameU8(NULL, buf, MAX_PATH_U8); GetFullPathNameU8(buf, MAX_PATH_U8, path, &fname); fname[-1] = 0; // remove '\\' execDir = strdup(path); }
void LogMng::StrictLogFile(char *logFile) { if (logFile[0] == 0) { return; } if (strncmp(logFile, "\\\\", 2) == 0 || logFile[1] == ':') { return; } char orgPath[MAX_PATH_U8]; strcpy(orgPath, logFile); if (strchr(logFile, '\\') == NULL) { if (SHGetSpecialFolderPathU8(0, logFile, CSIDL_MYDOCUMENTS, FALSE)) { AddPathU8(logFile, IP_MSG); AddPathU8(logFile, orgPath); return; } } char *tmp=NULL; GetFullPathNameU8(orgPath, MAX_PATH_U8, logFile, &tmp); return; }
BOOL MakeImageFolder(Cfg *cfg, char *dir) { char *fname = NULL; if (!GetFullPathNameU8(cfg->LogFile, MAX_PATH_U8, dir, &fname) && fname) return FALSE; strcpy(fname, IPMSG_CLIPBOARD_STOREDIR); return TRUE; }
/* パスからファイル名部分だけを取り出す */ BOOL PathToFname(const char *org_path, char *target_fname) { char path[MAX_BUF], *fname=NULL; if (GetFullPathNameU8(org_path, sizeof(path), path, &fname) == 0 || fname == NULL) return FALSE; strncpyz(target_fname, fname, MAX_PATH_U8); return TRUE; }
BOOL OpenFileDlg::Exec(char *target, int targ_size, char *title, char *filter, char *defaultDir, char *defaultExt) { if (targ_size <= 1) return FALSE; OPENFILENAME ofn; U8str fileName(targ_size); U8str dirName(targ_size); char *fname = NULL; if (*target && GetFullPathNameU8(target, targ_size, dirName.Buf(), &fname) != 0 && fname) { *(fname -1) = 0; strncpyz(fileName.Buf(), fname, targ_size); } else if (defaultDir) { strncpyz(dirName.Buf(), defaultDir, targ_size); } memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = parent ? parent->hWnd : NULL; ofn.lpstrFilter = filter; ofn.nFilterIndex = filter ? 1 : 0; ofn.lpstrFile = fileName.Buf(); ofn.lpstrDefExt = defaultExt; ofn.nMaxFile = targ_size; ofn.lpstrTitle = title; ofn.lpstrInitialDir = dirName.Buf(); ofn.lpfnHook = hook; ofn.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|(hook ? OFN_ENABLEHOOK : 0); if (mode == OPEN || mode == MULTI_OPEN) ofn.Flags |= OFN_FILEMUSTEXIST | (mode == MULTI_OPEN ? OFN_ALLOWMULTISELECT : 0); else ofn.Flags |= (mode == NODEREF_SAVE ? OFN_NODEREFERENCELINKS : 0); ofn.Flags |= flags; U8str dirNameBak(targ_size); GetCurrentDirectoryU8(targ_size, dirNameBak.Buf()); BOOL ret = (mode == OPEN || mode == MULTI_OPEN) ? GetOpenFileNameU8(&ofn) : GetSaveFileNameU8(&ofn); SetCurrentDirectoryU8(dirNameBak.Buf()); if (ret) { if (mode == MULTI_OPEN) { memcpy(target, fileName.Buf(), targ_size); } else { strncpyz(target, ofn.lpstrFile, targ_size); } if (defaultDir) strncpyz(defaultDir, ofn.lpstrFile, ofn.nFileOffset); } return ret; }
/* 親ディレクトリ取得(必ずフルパスであること。UNC対応) */ BOOL GetParentDirU8(const char *srcfile, char *dir) { char path[MAX_BUF], *fname=NULL; if (GetFullPathNameU8(srcfile, sizeof(path), path, &fname) == 0 || fname == NULL) return strcpy(dir, srcfile), FALSE; if (fname - path > 3 || path[1] != ':') *(fname - 1) = 0; else *fname = 0; // C:\ の場合 strcpy(dir, path); return TRUE; }
/* 2byte文字系でもきちんと動作させるためのルーチン (*strrchr(path, "\\")=0 だと '表'などで問題を起すため) */ BOOL PathToDir(const char *org_path, char *target_dir) { char path[MAX_BUF], *fname=NULL; if (GetFullPathNameU8(org_path, sizeof(path), path, &fname) == 0 || fname == NULL) return strncpyz(target_dir, org_path, MAX_PATH_U8), FALSE; if (fname - path > 3 || path[1] != ':') *(fname - 1) = 0; else *fname = 0; // C:\ の場合 strncpyz(target_dir, path, MAX_PATH_U8); return TRUE; }
BOOL OpenFileDlg::Exec(char *target, char *title, char *filter, char *defaultDir) { OPENFILENAME ofn; char szDirName[MAX_BUF_EX] = "", szFile[MAX_BUF_EX] = "", *fname = NULL; if (*target && GetFullPathNameU8(target, MAX_BUF, szDirName, &fname) != 0 && fname) *(fname -1) = 0, strncpyz(szFile, fname, MAX_PATH_U8); else if (defaultDir) strncpyz(szDirName, defaultDir, MAX_PATH_U8); memset(&ofn, 0, sizeof(ofn)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = parent ? parent->hWnd : NULL; ofn.lpstrFilter = filter; ofn.nFilterIndex = filter ? 1 : 0; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrTitle = title; ofn.lpstrInitialDir = szDirName; ofn.lpfnHook = hook; ofn.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|(hook ? OFN_ENABLEHOOK : 0); if (mode == OPEN || mode == MULTI_OPEN) ofn.Flags |= OFN_FILEMUSTEXIST | (mode == MULTI_OPEN ? OFN_ALLOWMULTISELECT : 0); else ofn.Flags |= (mode == NODEREF_SAVE ? OFN_NODEREFERENCELINKS : 0); char dirNameBak[MAX_PATH_U8]; GetCurrentDirectoryU8(sizeof(dirNameBak), dirNameBak); BOOL ret = (mode == OPEN || mode == MULTI_OPEN) ? GetOpenFileNameU8(&ofn) : GetSaveFileNameU8(&ofn); SetCurrentDirectoryU8(dirNameBak); if (ret) { if (mode == MULTI_OPEN) memcpy(target, szFile, sizeof(szFile)); else strncpyz(target, ofn.lpstrFile, MAX_PATH_U8); if (defaultDir) strncpyz(defaultDir, ofn.lpstrFile, ofn.nFileOffset); } return ret; }