int copy_dir_to_dir(const char *src, const char *dst) { DIR *dir; struct dirent *entry; struct stat st; char buf[PATH_MAX], buf2[PATH_MAX]; if (stat(dst, &st) < 0) if (Mkdir(dst) < 0) return -1; if ((dir = opendir(src)) == NULL) return -1; while ((entry = readdir(dir)) != NULL) { if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) continue; snprintf(buf, sizeof(buf), "%s/%s", src, entry->d_name); snprintf(buf2, sizeof(buf2), "%s/%s", dst, entry->d_name); if (stat(buf, &st) < 0) continue; if (S_ISDIR(st.st_mode)) Mkdir(buf2); copy_file(buf, buf2); } closedir(dir); return 0; }
static void newboard(FILE *fp, boardheader_t *b) { char buf[256]; fwrite(b, sizeof(boardheader_t), 1, fp); sprintf(buf, "boards/%c/%s", b->brdname[0], b->brdname); Mkdir(buf); sprintf(buf, "man/boards/%c/%s", b->brdname[0], b->brdname); Mkdir(buf); }
/* @param[in,out] fpath input as dirname, output as filename */ static inline int fhdr_stamp(char *fpath, fileheader_t *fh, int type) { char *ip = fpath; time4_t dtime = time(0); struct tm ptime; int res = 0; if (access(fpath, X_OK | R_OK | W_OK)) Mkdir(fpath); while (*(++ip)); *ip++ = '/'; switch (type) { case STAMP_FILE: do { sprintf(ip, "M.%d.A.%3.3X", (int)(++dtime), (unsigned int)(random() & 0xFFF)); } while ((res = OpenCreate(fpath, O_EXCL | O_WRONLY)) == -1 && errno == EEXIST); break; case STAMP_DIR: do { sprintf(ip, "D%X", (int)++dtime & 07777); } while ((res = Mkdir(fpath)) == -1 && errno == EEXIST); break; case STAMP_LINK: do { sprintf(ip, "S%X", (int)++dtime); } while ((res = symlink("temp", fpath)) == -1 && errno == EEXIST); break; default: // unknown return -1; break; } if (res == -1) return -1; if (type == STAMP_FILE) close(res); strlcpy(fh->filename, ip, sizeof(fh->filename)); localtime4_r(&dtime, &ptime); snprintf(fh->date, sizeof(fh->date), "%2d/%02d", ptime.tm_mon + 1, ptime.tm_mday); return 0; }
static void initDir() { Mkdir("adm"); Mkdir("boards"); Mkdir("etc"); Mkdir("man"); Mkdir("man/boards"); Mkdir("out"); Mkdir("tmp"); Mkdir("run"); Mkdir("jobspool"); }
bool CAttachmentProcessor::GenerateSavePath(const TUploadConf *pUploadConf,const string& strSubfix,vector<string>& vecDbPath,vector<string>& vecFilePath) { if(NULL == pUploadConf) return false; const vector<TSaveGroupConf>& vecSaveGroupConf = pUploadConf->vecSaveGroupConf; if(vecSaveGroupConf.empty()) return false; int size = vecSaveGroupConf.size(); int index = GetRandomNumber(0, size); const TSaveGroupConf& saveGroupConf = vecSaveGroupConf.at(index); string timeStr = GetTimeStr(); string uniqueStr = GetUniqueStr(); string namePrefix = pUploadConf->strSaveNamePrefix; namePrefix = (namePrefix != "") ? (namePrefix+"_") : ""; string strSubDir = pUploadConf->strSaveSubDir; strSubDir = (strSubDir!="")?(strSubDir+"/"):""; string saveDir = saveGroupConf.strSaveNodePath + "/" + strSubDir + timeStr; Mkdir(saveDir); string filePath = saveDir + "/" + namePrefix + uniqueStr + "." + strSubfix; string dbPath = saveGroupConf.strGroupName + "/" + strSubDir + timeStr + + "/" + namePrefix + uniqueStr + "." + strSubfix; vecDbPath.push_back(dbPath); vecFilePath.push_back(filePath); return true; }
int CFileZillaEngine::Execute(const CCommand &command) { if (command.GetId() != Command::cancel && IsBusy()) return FZ_REPLY_BUSY; m_bIsInCommand = true; int res = FZ_REPLY_INTERNALERROR; switch (command.GetId()) { case Command::connect: res = Connect(reinterpret_cast<const CConnectCommand &>(command)); break; case Command::disconnect: res = Disconnect(reinterpret_cast<const CDisconnectCommand &>(command)); break; case Command::cancel: res = Cancel(reinterpret_cast<const CCancelCommand &>(command)); break; case Command::list: res = List(reinterpret_cast<const CListCommand &>(command)); break; case Command::transfer: res = FileTransfer(reinterpret_cast<const CFileTransferCommand &>(command)); break; case Command::raw: res = RawCommand(reinterpret_cast<const CRawCommand&>(command)); break; case Command::del: res = Delete(reinterpret_cast<const CDeleteCommand&>(command)); break; case Command::removedir: res = RemoveDir(reinterpret_cast<const CRemoveDirCommand&>(command)); break; case Command::mkdir: res = Mkdir(reinterpret_cast<const CMkdirCommand&>(command)); break; case Command::rename: res = Rename(reinterpret_cast<const CRenameCommand&>(command)); break; case Command::chmod: res = Chmod(reinterpret_cast<const CChmodCommand&>(command)); break; default: return FZ_REPLY_SYNTAXERROR; } if (res != FZ_REPLY_WOULDBLOCK) ResetOperation(res); m_bIsInCommand = false; if (command.GetId() != Command::disconnect) res |= m_nControlSocketError; else if (res & FZ_REPLY_DISCONNECTED) res = FZ_REPLY_OK; m_nControlSocketError = 0; return res; }
int mkpath(char *path, int mode) { struct stat sb; char *slash; int done = 0; slash = path; while (!done) { slash += strspn(slash, LOCSLASH_S); slash += strcspn(slash, LOCSLASH_S); done = (*slash == '\0'); *slash = '\0'; if (stat(path, &sb)) { if (errno != ENOENT || (Mkdir(path, mode) && errno != EEXIST)) { return (-1); } } else if (!(S_IFDIR & sb.st_mode)) { return (-1); } if (!done) *slash = LOCSLASH_C; } return (0); }
static void Test1() { Init(NULL); // std::vector<StackEntry> stack; StackEntry ent; ent.dirname = "/"; Check(OpenDir(ent.dirname, &ent.file_info)); stack.push_back(ent); char cmd[256]; while (true) { int ret = scanf("%s", cmd); if (strcmp(cmd, "exit") == 0) { break; } else if (StartsWith(cmd, "cd", 2)) { scanf("%s", cmd); Chdir(stack, cmd); } else if (StartsWith(cmd, "mkdir", 5)) { scanf("%s", cmd); Mkdir(Combine(stack.back().dirname,cmd)); } else if (StartsWith(cmd, "rmdir", 5)) { scanf("%s", cmd); Rmdir(Combine(stack.back().dirname,cmd)); } else if (strcmp(cmd, "ls") == 0) { List(stack); } } }
~Log() { if (_messages.size() <= 1) { return; } // Build the file name for storing this game auto file = Helper::GetUserDataDir(); file.SetFullName(wxString::Format("%i.hsl", int(_messages[0].first / int(1e9)))); file.AppendDir("Logged"); auto filename = file.GetFullPath(); wxLogVerbose("saving %d messages to %s", _messages.size() - 1, filename); // Create the containing directory if needed if (!file.Mkdir(wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL)) { wxLogError("error creating save directory: %s", filename); return; } // This should't happen, but check and log just in case if (file.Exists()) { wxLogWarning("overwriting existing game: %s", filename); } // Open the file wxFileOutputStream fout(file.GetFullPath()); if (!fout.Ok()) { wxLogError("error opening file: %s", filename); return; } // Zip the data while saving it to save some bandwidth later when the file is uploaded wxZlibOutputStream zout(fout, wxZ_BEST_COMPRESSION, wxZLIB_NO_HEADER); // Add header info // <nanotime> // 48 53 4C 48 09 00 00 00 // 09 XX XX XX XX XX XX XX XX auto version = Helper::GetHearthstoneVersion(); zout.Write(&_messages[0].first, 8) .Write("HSLH\t\0\0\0\t", 9) // HSLH 09000000 09 .Write(&version, 8); // Add the rest of the data auto size = 25; for (auto i = 1u; i < _messages.size(); i++) { auto time = _messages[i].first; auto msg = _messages[i].second; size += 8 + msg.size(); zout.Write(&time, 8).Write(msg.data(), msg.size()); } zout.Close(); wxLogVerbose("saved %d messages from %s (%d bytes, %lld compressed)", _messages.size() - 1, _name, size, fout.GetLength()); // Notify the app that it can upload the log file HearthLogApp::UploadLog(filename); }
bool HearthLogApp::OnInit() { // Build the path for a log file auto file = Helper::GetUserDataDir(); file.SetFullName("log.txt"); // Create the containing directory if needed if (!file.Mkdir(wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL)) { wxLogError("error creating save directory: %s", file.GetPath()); return false; } // Open a file for logging fout.open(file.GetFullPath().c_str().AsChar(), std::ofstream::out); // Setup the log file auto logFile = new wxLogStream(&fout); wxLog::SetActiveTarget(logFile); // Wrap the log file with a GUI window auto logWindow = new wxLogWindow(NULL, _("Log"), false, true); logWindow->GetFrame()->SetSize(1024, 300); wxLog::SetActiveTarget(logWindow); // Start logging wxLog::SetVerbose(); wxLogMessage(_("Hearth Log %s"), Helper::AppVersion()); // Setup config from file wxConfig::Set(new wxFileConfig("", "", "config.ini", "", wxCONFIG_USE_LOCAL_FILE | wxCONFIG_USE_SUBDIR)); // Locate the Hearthstone directory while (!Helper::GetHearthstoneVersion()) { auto dir = wxDirSelector(_("Hearth Log: Please locate your Hearthstone directory (Usually C:\\Program Files (x86)\\Hearthstone)")); if (dir.empty()) { return false; } Helper::WriteConfig("HearthstoneDir", dir); } // Create the GUI bits icon = new TaskBarIcon(); // Setup a packet parsing stack PacketCapture::Start("tcp port 3724 or tcp port 1119", //PacketCapture::Start("tcp port 1119", "C:\\Users\\Chip\\Documents\\Network Monitor 3\\Captures\\Hearthstone2.pcap", []() -> PacketCapture::Callback::Ptr { return std::make_unique<tcp::Parser>( [](int64_t nanotime, tcp::Stream *stream) -> tcp::Parser::Callback::Ptr { return std::make_unique<GameLogger>(nanotime, stream); }); }); // Try to upload any logs that haven't been uploaded yet icon->UploadAll(); return true; }
void MakeDirIfNotExist(const char *path, int mode) { if (Mkdir(path, mode)) { if (errno != EEXIST) { ythrow TSystemError() << "failed to create directory " << path; } else { ClearLastSystemError(); } } }
static void initBoardsDIR() { int i; char buf[256]; Mkdir("boards"); strcpy(buf, "boards/?"); for(i = 0; i < 26; i++) { buf[7] = 'A' + i; Mkdir(buf); buf[7] = 'a' + i; Mkdir(buf); if(i >= 10) continue; /* 0~9 */ buf[7] = '0' + i; Mkdir(buf); } }
void mailUser(char *userid) { int count; FILE *fp, *fp2; time4_t t; fileheader_t header; struct stat st; char filename[512]; fp2 = fopen(mailfile, "r"); if (fp2 == NULL) { fprintf(stderr, "Cannot open file %s\n", mailfile); return; } sprintf(filename, BBSHOME "/home/%c/%s", userid[0], userid); if (stat(filename, &st) == -1) { if (Mkdir(filename) == -1) { fprintf(stderr, "mail box create error %s \n", filename); fclose(fp2); return; } } else if (!(st.st_mode & S_IFDIR)) { fprintf(stderr, "mail box error\n"); fclose(fp2); return; } stampfile(filename, &header); fp = fopen(filename, "w"); if (fp == NULL) { fprintf(stderr, "Cannot open file %s\n", filename); fclose(fp2); return; } t = time(NULL); fprintf(fp, "作者: 小天使系統\n" "標題: 給小天使的一封信\n" "時間: %s\n", ctime4(&t)); while ((count = fread(filename, 1, sizeof(filename), fp2))) { fwrite(filename, 1, count, fp); } fclose(fp); fclose(fp2); strcpy(header.title, "給小天使的一封信"); strcpy(header.owner, "小天使系統"); sprintf(filename, BBSHOME "/home/%c/%s/.DIR", userid[0], userid); append_record(filename, &header, sizeof(header)); mailalertuser(userid); printf("%s\n", userid); }
// XXX announce(man) directory uses a smaller range of file names. // TODO merge with common/bbs/fhdr_stamp.c int stampadir(char *fpath, fileheader_t * fh, int large_set) { register char *ip = fpath; time4_t dtime = COMMON_TIME; struct tm ptime; const int mask_small = 0xFFF, // basic (4096) mask_large = 0xFFFF; // large (65536) int mask = mask_small; int retries = 0; // try to create root path if (access(fpath, X_OK | R_OK | W_OK) != 0) Mkdir(fpath); // find tail while (*(++ip)); *ip++ = '/'; // loop to create file memset(fh, 0, sizeof(fileheader_t)); do { if (++retries > mask_small && mask == mask_small) { if (!large_set) return -1; mask = mask_large; } if (retries > mask_large) return -1; // create minimal length file name. sprintf(ip, "D%X", (int)++dtime & mask); } while (Mkdir(fpath) == -1); strlcpy(fh->filename, ip, sizeof(fh->filename)); localtime4_r(&dtime, &ptime); snprintf(fh->date, sizeof(fh->date), "%2d/%02d", ptime.tm_mon + 1, ptime.tm_mday); return 0; }
static void initMan() { FILE *fp; fileheader_t f; time_t t = time(NULL); struct tm *tm = localtime(&t); memset(&f, 0, sizeof(f)); strcpy(f.owner, "SYSOP"); sprintf(f.date, "%2d/%02d", tm->tm_mon + 1, tm->tm_mday); f.multi.money = 0; f.filemode = 0; if((fp = fopen("man/boards/N/Note/.DIR", "w"))) { strcpy(f.filename, "SONGBOOK"); strcpy(f.title, "◆ 【點 歌 歌 本】"); fwrite(&f, sizeof(f), 1, fp); Mkdir("man/boards/N/Note/SONGBOOK"); strcpy(f.filename, "SONGO"); strcpy(f.title, "◆ <點歌> 動態看板"); fwrite(&f, sizeof(f), 1, fp); Mkdir("man/boards/N/Note/SONGO"); strcpy(f.filename, "SYS"); strcpy(f.title, "◆ <系統> 動態看板"); fwrite(&f, sizeof(f), 1, fp); Mkdir("man/boards/N/Note/SYS"); strcpy(f.filename, "AD"); strcpy(f.title, "◆ <廣告> 動態看板"); fwrite(&f, sizeof(f), 1, fp); Mkdir("man/boards/N/Note/AD"); strcpy(f.filename, "NEWS"); strcpy(f.title, "◆ <新聞> 動態看板"); fwrite(&f, sizeof(f), 1, fp); Mkdir("man/boards/N/Note/NEWS"); fclose(fp); } }
void Mkdir_R(char *path) { char *ptr; for(ptr = path;ptr = strchr(ptr,'/');ptr++) { *ptr = '\0'; Mkdir(path); *ptr = '/'; } }
static void initHome() { int i; char buf[256]; Mkdir("home"); strcpy(buf, "home/?"); for(i = 0; i < 26; i++) { buf[5] = 'A' + i; Mkdir(buf); buf[5] = 'a' + i; Mkdir(buf); #if 0 /* in current implementation we don't allow * id as digits so we don't create now. */ if(i >= 10) continue; /* 0~9 */ buf[5] = '0' + i; Mkdir(buf); #endif } }
int ReportGenerateFolder(Report *self, const char *cszDirPath) { int rc, state, iLenPath, iLenRest; DIR *dir; char szPathReport[BUF_SIZE_MID + 1]; struct dirent *entry; rc = 0; try { #if defined(_WIN32) #elif defined(__linux__) dir = NULL; state = Mkdir(cszDirPath, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); /* The folder already exists and we should remove all the files in it. */ if (state != 0) { dir = Opendir(cszDirPath); iLenPath = strlen(cszDirPath); memset(szPathReport, 0, sizeof(char) * (BUF_SIZE_MID + 1)); strcpy(szPathReport, cszDirPath); if (cszDirPath[iLenPath - 1] != OS_PATH_SEPARATOR) { szPathReport[iLenPath] = OS_PATH_SEPARATOR; iLenPath++; } while ((entry = Readdir(dir)) != NULL) { if ((strcmp(entry->d_name, ".") == 0) || (strcmp(entry->d_name, "..") == 0)) continue; strcpy(szPathReport + iLenPath, entry->d_name); Unlink(szPathReport); iLenRest = strlen(entry->d_name); memset(szPathReport + iLenPath, 0, sizeof(char) * iLenRest); } } #endif } catch(EXCEPT_IO_DIR_MAKE) { rc = -1; } catch(EXCEPT_IO_DIR_OPEN) { rc = -1; } catch(EXCEPT_IO_DIR_READ) { rc = -1; } catch(EXCEPT_IO_FILE_UNLINK) { rc = -1; } end_try; if (dir != NULL) Closedir(dir); EXIT: return rc; }
/* Expand a file into a convenient location, nuking it each time */ static char * expand(char *fname) { char *gunzip = "/usr/bin/gunzip"; if (!directory_exists(DOC_TMP_DIR)) { Mkdir(DOC_TMP_DIR); if (chown(DOC_TMP_DIR, 0, 0) < 0) return NULL; if (chmod(DOC_TMP_DIR, S_IRWXU) < 0) return NULL; } else unlink(DOC_TMP_FILE); if (!file_readable(fname) || vsystem("%s < %s > %s", gunzip, fname, DOC_TMP_FILE)) return NULL; return DOC_TMP_FILE; }
inline std::string BuildPath(const std::string& path) { std::vector<std::string> dir; PathSegment(path, dir); std::string pathtest; for (auto directory : dir) { pathtest += directory; if (TypeOfFile(pathtest) == FileType::REGULAR) return ""; if (TypeOfFile(pathtest) == FileType::INVALID) { if (Mkdir(pathtest) == false) return ""; } pathtest += SLASHSEP; } return pathtest; }
INT _reentrant AASetActivationRecords( INT iNumRecords, INT unused2, INT * pActivationBuf ) { int fp; int bytesToWrite; int iFileAttribute; iNumRecords = 8; // Do a little error checking if ( (iNumRecords != 8) && !pActivationBuf ) return -1; //Change to activation folder directory. It may already exist if //user has previously activated the account. if( Chdir((_packed char *)ActivationFolder) != FS_SUCCESS ) { //If there was an error, the folder may not exist. Try to create it. If //it fails, something is wrong so return an error. if (Mkdir ((_packed char *)ActivationFolder) != FS_SUCCESS) return -2; } // Activation records are always stored in file on internal Flash fp = FSFileCreate( (_packed BYTE *) ActivationFilename, 0 ); if ( fp < 0 ) { return -2; } // Write all the activation records at once bytesToWrite = 560; if ( FSFileWrite( bytesToWrite, fp, MEM_SPACE_Y, -1, (WORD *) pActivationBuf ) != bytesToWrite ) { return -3; } //Set the hidden attribute so the activation data will not be added to the database. iFileAttribute = filegetattrib ((_packed BYTE *) ActivationFilename); filesetattrib (fp, iFileAttribute | ATTR_HIDDEN ); // Close the file and make sure stuff is saved off to Flash FSFileClose( fp ); FlushCache( ); return 0; }
bool CodeLiteApp::IsSingleInstance(const wxCmdLineParser &parser, const wxString &curdir) { // check for single instance if ( clConfig::Get().Read("SingleInstance", false) ) { const wxString name = wxString::Format(wxT("CodeLite-%s"), wxGetUserId().c_str()); m_singleInstance = new wxSingleInstanceChecker(name); if (m_singleInstance->IsAnotherRunning()) { // prepare commands file for the running instance wxString files; for (size_t i=0; i< parser.GetParamCount(); i++) { wxString argument = parser.GetParam(i); //convert to full path and open it wxFileName fn(argument); fn.MakeAbsolute(curdir); files << fn.GetFullPath() << wxT("\n"); } if (files.IsEmpty() == false) { Mkdir(ManagerST::Get()->GetStarupDirectory() + wxT("/ipc")); wxString file_name, tmp_file; tmp_file << ManagerST::Get()->GetStarupDirectory() << wxT("/ipc/command.msg.tmp"); file_name << ManagerST::Get()->GetStarupDirectory() << wxT("/ipc/command.msg"); // write the content to a temporary file, once completed, // rename the file to the actual file name WriteFileUTF8(tmp_file, files); wxRenameFile(tmp_file, file_name); } return false; } } return true; }
int Mkdirhier(const char* path_, int mode) { char path[PAL_MAX_PATH_SIZE]; char buf[PAL_MAX_PATH_SIZE]; char* p; char* context = NULL; /* Make a complete copy of the path (that we can destroy) */ if (Strlcpy(path, path_, sizeof(path)) >= sizeof(path)) return -1; buf[0] = '\0'; for (p = Strtok(path, "/", &context); p; p = Strtok(NULL, "/", &context)) { #if defined(CONFIG_OS_WINDOWS) /* Skip drive letters (on Windows) */ if (p == path && isalpha((unsigned char)p[0]) && p[1] == ':' && p[2] == '\0') { Strlcat(buf, p, sizeof(buf)); continue; } #endif /* Concatenate next component */ Strlcat(buf, "/", sizeof(buf)); Strlcat(buf, p, sizeof(buf)); /* Create directory if it does not already exist */ if (!Isdir(buf)) { if (Mkdir(buf, mode) != 0) return -1; } } return 0; }
VOID FatMain( IN ULONG LoopCount, IN CHAR Device[] ) { VOID Create(),Delete(),Mkdir(),Directory(),Read(); CHAR Str[64]; CHAR LoopStr[64]; ULONG i; LARGE_INTEGER Time; printf("FatMain %d\n", LoopCount); NtQuerySystemTime(&Time); strcpy( Prefix, Device); Prefix[48] = 0; RtlIntegerToChar((ULONG)NtCurrentTeb()->ClientId.UniqueProcess, 16, -8, &Prefix[strlen(Device)]); Mkdir( Prefix ); Directory( Device ); Directory( Prefix ); for (i = 0; i < LoopCount; i += 1) { NtQuerySystemTime(&Time); strcpy(LoopStr, "Start loop xxxxxxxx "); RtlIntegerToChar(i, 16, -8, &LoopStr[11]); strcat( LoopStr, Prefix ); printf(LoopStr); printf("\n"); strcpy( Str, Prefix ); Create( strcat( Str, "\\1.tmp" ), Time.LowPart, 1 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\2.tmp" ), Time.LowPart, 2 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\4.tmp" ), Time.LowPart, 4 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\8.tmp" ), Time.LowPart, 8 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\16.tmp" ), Time.LowPart, 16 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\32.tmp" ), Time.LowPart, 32 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\64.tmp" ), Time.LowPart, 64 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\128.tmp" ), Time.LowPart, 128 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\236.tmp" ), Time.LowPart, 256 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\512.tmp" ), Time.LowPart, 512 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\1024.tmp" ), Time.LowPart, 1024 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\2048.tmp" ), Time.LowPart, 2048 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\4096.tmp" ), Time.LowPart, 4096 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\8192.tmp" ), Time.LowPart, 8192 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\16384.tmp" ), Time.LowPart, 16384 ); strcpy( Str, Prefix ); Create( strcat( Str, "\\32768.tmp" ), Time.LowPart, 32768 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\1.tmp" ), Time.LowPart, 1 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\2.tmp" ), Time.LowPart, 2 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\4.tmp" ), Time.LowPart, 4 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\8.tmp" ), Time.LowPart, 8 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\16.tmp" ), Time.LowPart, 16 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\32.tmp" ), Time.LowPart, 32 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\64.tmp" ), Time.LowPart, 64 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\128.tmp" ), Time.LowPart, 128 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\236.tmp" ), Time.LowPart, 256 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\512.tmp" ), Time.LowPart, 512 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\1024.tmp" ), Time.LowPart, 1024 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\2048.tmp" ), Time.LowPart, 2048 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\4096.tmp" ), Time.LowPart, 4096 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\8192.tmp" ), Time.LowPart, 8192 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\16384.tmp" ), Time.LowPart, 16384 ); strcpy( Str, Prefix ); Read( strcat( Str, "\\32768.tmp" ), Time.LowPart, 32768 ); Directory( Device ); Directory( Prefix ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\1.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\2.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\4.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\8.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\16.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\32.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\64.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\128.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\236.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\512.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\1024.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\2048.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\4096.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\8192.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\16384.tmp" ) ); strcpy( Str, Prefix ); Delete( strcat( Str, "\\32768.tmp" ) ); Directory( Device ); Directory( Prefix ); } printf( "Done\n" ); return; }
TVerdict CTestSyscalls::doTestStepL() { int err; if(TestStepName() == KCreat) { INFO_PRINTF1(_L("Creat():")); err = Creat(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen1) { INFO_PRINTF1(_L("open1():")); err = open1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen2) { INFO_PRINTF1(_L("open2():")); err = open2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen3) { INFO_PRINTF1(_L("open3():")); err = open3(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen4) { INFO_PRINTF1(_L("open4():")); err = open4(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen5) { INFO_PRINTF1(_L("open5():")); err = open5(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen6) { INFO_PRINTF1(_L("open6():")); err = open6(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KOpenTruncate1) { INFO_PRINTF1(_L("OpenTruncate1:")); err = OpenTruncate1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KOpenTruncate2) { INFO_PRINTF1(_L("OpenTruncate2:")); err = OpenTruncate2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen7) { INFO_PRINTF1(_L("open7():")); err = open7(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KOpenInAppendMode) { INFO_PRINTF1(_L("OpenInAppendMode():")); err = OpenInAppendMode(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kwrite1) { INFO_PRINTF1(_L("write1():")); err = write1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kwrite2) { INFO_PRINTF1(_L("write2():")); err = write2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kwrite3) { INFO_PRINTF1(_L("write3():")); err = write3(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kwrite5) { INFO_PRINTF1(_L("write5():")); err = write5(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kread1) { INFO_PRINTF1(_L("read1():")); err = read1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kread2) { INFO_PRINTF1(_L("read2():")); err = read2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kread3) { INFO_PRINTF1(_L("read3():")); err = read3(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kread4) { INFO_PRINTF1(_L("read4():")); err = read4(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KOpendir) { INFO_PRINTF1(_L("Opendir():")); err = Opendir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KClosedir) { INFO_PRINTF1(_L("Closedir():")); err = Closedir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KReaddir) { INFO_PRINTF1(_L("Readdir():")); err = Readdir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KLseek) { INFO_PRINTF1(_L("Lseek():")); err = Lseek(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KLseek1) { INFO_PRINTF1(_L("Lseek1():")); err = Lseek1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KAccess) { INFO_PRINTF1(_L("Access():")); err = Access(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KAccess1) { INFO_PRINTF1(_L("Access1():")); err = Access1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KDup) { INFO_PRINTF1(_L("Dup():")); err = Dup(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KDup2) { INFO_PRINTF1(_L("Dup2():")); err = Dup2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRename) { INFO_PRINTF1(_L("Rename():")); err = Rename(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRename1) { INFO_PRINTF1(_L("Rename1():")); err = Rename1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChmod) { INFO_PRINTF1(_L("Chmod():")); err = Chmod(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChmod1) { INFO_PRINTF1(_L("Chmod1():")); err = Chmod1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChmod_dir) { INFO_PRINTF1(_L("Chmod_dir():")); err = Chmod_dir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KFChmod) { INFO_PRINTF1(_L("FChmod():")); err = FChmod(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KFChmod_dir) { INFO_PRINTF1(_L("FChmod_dir():")); err = FChmod_dir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KExit) { INFO_PRINTF1(_L("Exit():")); err = Exit(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KClose) { INFO_PRINTF1(_L("Close():")); err = Close(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KMkdir) { INFO_PRINTF1(_L("Mkdir():")); err = Mkdir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KMk_dir) { INFO_PRINTF1(_L("Mk_dir():")); err = Mk_dir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRmdir) { INFO_PRINTF1(_L("Rmdir():")); err = Rmdir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRm_dir) { INFO_PRINTF1(_L("Rm_dir():")); err = Rm_dir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRmdir1) { INFO_PRINTF1(_L("Rmdir1():")); err = Rmdir1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRmdir_Chdir) { INFO_PRINTF1(_L("Rmdir_Chdir():")); err = Rmdir_Chdir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KFsync) { INFO_PRINTF1(_L("Fsync():")); err = Fsync(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KUtimes) { INFO_PRINTF1(_L("Utimes():")); err = Utimes(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KUtime) { INFO_PRINTF1(_L("Utime():")); err = Utime(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChdir) { INFO_PRINTF1(_L("Chdir():")); err = Chdir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KFcntl) { INFO_PRINTF1(_L("Fcntl():")); err = Fcntl(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KIoctl) { INFO_PRINTF1(_L("Ioctl():")); err = Ioctl(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KFstat) { INFO_PRINTF1(_L("Fstat():")); err = Fstat(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KStat) { INFO_PRINTF1(_L("Stat():")); err = Stat(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KStat1) { INFO_PRINTF1(_L("Stat1():")); err = Stat1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KStat2) { INFO_PRINTF1(_L("Stat2():")); err = Stat2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KStat3) { INFO_PRINTF1(_L("Stat3():")); err = Stat3(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KGetpid) { INFO_PRINTF1(_L("Getpid():")); err = Getpid(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KClock) { INFO_PRINTF1(_L("Clock():")); err = Clock(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KTime) { INFO_PRINTF1(_L("Time():")); err = Time(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KWaitPid) { INFO_PRINTF1(_L("WaitPid():")); err = WaitPid(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KReadV) { INFO_PRINTF1(_L("ReadV():")); err = ReadV(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KWriteV) { INFO_PRINTF1(_L("WriteV():")); err = WriteV(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KSleep) { INFO_PRINTF1(_L("Sleep():")); err = Sleep(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KSeekDir) { INFO_PRINTF1(_L("SeekDir():")); err = SeekDir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRewindDir) { INFO_PRINTF1(_L("RewindDir():")); err = RewindDir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KTelldir) { INFO_PRINTF1(_L("Telldir():")); err = Telldir(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KTestClock) { INFO_PRINTF1(_L("TestClock():")); err = TestClock(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KCreat2) { INFO_PRINTF1(_L("Creat2():")); err = Creat2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopen8) { INFO_PRINTF1(_L("open8():")); err = open8(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KTestStat) { INFO_PRINTF1(_L("KTestStat():")); err = TestStat(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KLseekttytest1) { INFO_PRINTF1(_L("Lseekttytest1():")); err = Lseekttytest1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KLseekttytest2) { INFO_PRINTF1(_L("Lseekttytest2():")); err = Lseekttytest2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KWaitPidtest) { INFO_PRINTF1(_L("WaitPidtest():")); err = WaitPidtest(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KWaittest) { INFO_PRINTF1(_L("Waittest():")); err = Waittest(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KOpen_FileDes_Test) { INFO_PRINTF1(_L("Open_FileDes_Test():")); err = Open_FileDes_Test(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kopenuid) { INFO_PRINTF1(_L("openuid():")); err = openuid(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KMkdir1) { INFO_PRINTF1(_L("Mkdir1():")); err = Mkdir1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KMkdir2) { INFO_PRINTF1(_L("Mkdir2():")); err = Mkdir2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRename2) { INFO_PRINTF1(_L("Rename2():")); err = Rename2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Ktestfsync) { INFO_PRINTF1(_L("testfsync():")); err = testfsync(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Ktestrename) { INFO_PRINTF1(_L("testrename():")); err = testrename(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Ktestopenvalidate) { INFO_PRINTF1(_L("testopenvalidate():")); err = testopenvalidate(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Ksync_safe) { INFO_PRINTF1(_L("sync_safe():")); err = sync_safe(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KFstat1) { INFO_PRINTF1(_L("Fstat1():")); err = Fstat1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KUtimes1) { INFO_PRINTF1(_L("Utimes1():")); err = Utimes1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KMkdir_test1) { INFO_PRINTF1(_L("Mkdir_test1():")); err = Mkdir_test1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChmod_test) { INFO_PRINTF1(_L("Chmod_test():")); err = Chmod_test(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChdir1) { INFO_PRINTF1(_L("Chdir1():")); err = Chdir1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRmdir2) { INFO_PRINTF1(_L("Rmdir2():")); err = Rmdir2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRename_test) { INFO_PRINTF1(_L("Rename_test():")); err = Rename_test(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRename3) { INFO_PRINTF1(_L("Rename3():")); err = Rename3(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KCreat1) { INFO_PRINTF1(_L("Creat1():")); err = Creat1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KReadV1) { INFO_PRINTF1(_L("ReadV1():")); err = ReadV1(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KUtimes2) { INFO_PRINTF1(_L("Utimes2():")); err = Utimes2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KStat_test) { INFO_PRINTF1(_L("Stat_test():")); err = Stat_test(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KMkdir_test2) { INFO_PRINTF1(_L("Mkdir_test2():")); err = Mkdir_test2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChmod2) { INFO_PRINTF1(_L("Chmod2():")); err = Chmod2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KChdir2) { INFO_PRINTF1(_L("Chdir2():")); err = Chdir2(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRename4) { INFO_PRINTF1(_L("Rename4():")); err = Rename4(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRename5) { INFO_PRINTF1(_L("Rename5():")); err = Rename5(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == KRmdir3) { INFO_PRINTF1(_L("Rmdir3():")); err = Rmdir3(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } else if(TestStepName() == Kread5) { INFO_PRINTF1(_L("read5():")); err = read5(); SetTestStepResult(err ? static_cast<TVerdict>(err) : EPass); } return TestStepResult(); }
static void Test(Properties &prop) { FileSystemState *tablefs_data; tablefs_data = new tablefs::FileSystemState(prop.getPropertyInt("threshold"), prop.getProperty("metadir").c_str(), prop.getProperty("datadir").c_str(), prop.getProperty("logfile").c_str(), prop.getPropertyInt("sync.time.limit",-1)); SetState(tablefs_data); Init(NULL); int mem_lock_size = 400; mem_lock_size = prop.getPropertyInt("mem.lock.size", 400); TraceLoader loader(mem_lock_size); loader.LoadTrace(prop.getProperty("tracefile").c_str()); Monitor mon = Monitor(prop.getProperty("mon.partition"), prop.getProperty("mon.filesystem")); Monitor tmon = Monitor(prop.getProperty("mon.partition"), prop.getProperty("mon.filesystem")); mon.DoMonitor(); tmon.DoMonitor(); sync(); srand(100); time_t time1 = time(NULL); int cnt = 0; for (int i = 0; i < loader.getNumPaths(); ++i) { char filetype; char* path = loader.getPath(i, filetype); Stat(path); if (filetype == 'f') { Mknode(path); } else if (filetype == 'd') { Mkdir(path); } Stat(path); cnt ++; if (cnt >= 1000) { tmon.DoMonitor(); cnt = 0; } } time_t time2 = time(NULL); mon.DoMonitor(); tmon.DoMonitor(); printf("create directory tree , %d\n", (int) (time2 - time1)); int nquery = prop.getPropertyInt("num.query"); int npath = loader.getNumPaths(); printf("nquery %d npath %d\n", nquery, npath); cnt = 0; for (int i = 0; i < nquery; ++i) { int pi = rand() % npath; char* path = loader.getPath(pi); if ((i & 3) == 0) { Chmod(path, 777); } else if ((i & 3) == 1) { struct timespec tv[2]; tv[0].tv_sec = time(NULL); tv[1].tv_sec = time(NULL); UpdateTimens(path, tv); } else { Stat(path); } cnt++; if (cnt >= 1000) { tmon.DoMonitor(); cnt = 0; } } time_t time3 = time(NULL); mon.DoMonitor(); tmon.DoMonitor(); printf("update and query , %d\n", (int) (time3 - time2)); char tpath[256]; sprintf(tpath, "%s/test.txt", prop.getProperty("metadir").c_str()); int fd = open(tpath, O_WRONLY); fsync(fd); close(fd); sync(); for (int i = 0; i < 20; ++i) { sleep(1); tmon.DoMonitor(); } time_t time4 = time(NULL); mon.DoMonitor(); tmon.DoMonitor(); printf("sync , %d\n", (int) (time4 - time3)); mon.Report(); tmon.Report(); Destroy(tablefs_data); }
void a_pasteitem(menu_t * pm, int mode) { char newpath[PATHLEN]; char buf[PATHLEN]; char ans[2], skipAll = 0, multiple = 0; int i, copied = 0; fileheader_t item; CopyQueue *cq; move(b_lines - 1, 0); if(copyqueue_querysize() <= 0) { vmsg("請先執行複製(copy)命令後再貼上(paste)"); return; } if(mode && copyqueue_querysize() > 1) { multiple = 1; move(b_lines-2, 0); clrtobot(); outs("c: 對各項目個別確認是否要貼上, z: 全部不貼,同時重設並取消全部標記\n"); snprintf(buf, sizeof(buf), "確定要貼上全部共 %d 個項目嗎 (c/z/y/N)? ", copyqueue_querysize()); getdata(b_lines - 1, 0, buf, ans, sizeof(ans), LCECHO); if(ans[0] == 'y') skipAll = 1; else if(ans[0] == 'z') { copyqueue_reset(); vmsg("已重設複製記錄。"); return; } else if (ans[0] != 'c') return; clear(); } while (copyqueue_querysize() > 0) { cq = copyqueue_gethead(); if(!cq->copyfile[0]) continue; if(mode && multiple) { scroll(); move(b_lines-2, 0); clrtobot(); prints("%d. %s\n", ++copied,cq->copytitle); } if (dashd(cq->copyfile)) { for (i = 0; cq->copyfile[i] && cq->copyfile[i] == pm->path[i]; i++); if (!cq->copyfile[i]) { vmsg("將目錄拷進自己的子目錄中,會造成無窮迴圈!"); continue; } } if (mode && !skipAll) { snprintf(buf, sizeof(buf), "確定要拷貝[%s]嗎(Y/N)?[N] ", cq->copytitle); getdata(b_lines - 1, 0, buf, ans, sizeof(ans), LCECHO); } else ans[0] = 'y'; if (ans[0] == 'y') { strlcpy(newpath, pm->path, sizeof(newpath)); if (*cq->copyowner) { char *fname = strrchr(cq->copyfile, '/'); if (fname) strcat(newpath, fname); else return; if (access(pm->path, X_OK | R_OK | W_OK)) Mkdir(pm->path); memset(&item, 0, sizeof(fileheader_t)); strlcpy(item.filename, fname + 1, sizeof(item.filename)); memcpy(cq->copytitle, "◎", 2); Copy(cq->copyfile, newpath); } else if (dashf(cq->copyfile)) { stampfile(newpath, &item); memcpy(cq->copytitle, "◇", 2); Copy(cq->copyfile, newpath); } else if (dashd(cq->copyfile) && stampadir(newpath, &item, 0) != -1) { memcpy(cq->copytitle, "◆", 2); copy_file(cq->copyfile, newpath); } else { copyqueue_reset(); vmsg("無法拷貝!"); return; } strlcpy(item.owner, *cq->copyowner ? cq->copyowner : cuser.userid, sizeof(item.owner)); strlcpy(item.title, cq->copytitle, sizeof(item.title)); a_additem(pm, &item); cq->copyfile[0] = '\0'; } } }
INT _reentrant FSCreateDir(_packed BYTE *dirname,INT DeviceNumber) { ConvName(dirname, DeviceNumber); return Mkdir(namebuffer); }
void test35c() { gid_t gid, gid2; uid_t uid, uid2; struct utimbuf ub; int fd, does_truncate, stat_loc; subtest = 3; /* Access problems. */ Mkdir("bar"); Creat("bar/tryme"); if (superuser) { Chmod("bar", 0000); /* No search permisson at all. */ if (utime("bar/tryme", NULL) != 0) e(1); } if (!superuser) { Chmod("bar", 0677); /* No search permisson. */ if (utime("bar/tryme", NULL) != -1) e(2); if (errno != EACCES) e(3); } Chmod("bar", 0777); if (I_can_chown) { switch (fork()) { case -1: printf("Can't fork\n"); break; case 0: alarm(20); /* Get two differend non root uids. */ if (superuser) { getids(&uid, &gid); if (uid == 0) getids(&uid, &gid); if (uid == 0) e(4); } if (!superuser) { uid = geteuid(); gid = getegid(); } getids(&uid2, &gid); if (uid == uid2) getids(&uid2, &gid2); if (uid == uid2) e(5); /* Creat a number of files for root, user and user2. */ Creat("rootfile"); /* Owned by root. */ Chmod("rootfile", 0600); Chown("rootfile", 0, 0); Creat("user2file"); /* Owned by user 2, writeable. */ Chmod("user2file", 0020); Chown("user2file", uid2, gid); Creat("user2private"); /* Owned by user 2, privately. */ Chmod("user2private", 0600); Chown("user2private", uid2, gid); if (superuser) { setgid(gid); setuid(uid); } /* We now are user ``uid'' from group ``gid''. */ ub.actime = (time_t) 12345L; ub.modtime = (time_t) 12345L; if (utime("rootfile", NULL) != -1) e(6); if (errno != EACCES) e(7); if (utime("rootfile", &ub) != -1) e(8); if (errno != EPERM) e(9); if (utime("user2file", NULL) != 0) e(10); if (utime("user2file", &ub) != -1) e(11); if (errno != EPERM) e(12); if (utime("user2private", NULL) != -1) e(13); if (errno != EACCES) e(14); if (utime("user2private", &ub) != -1) e(15); if (errno != EPERM) e(16); exit(errct ? 1 : 0); default: wait(&stat_loc); if (stat_loc != 0) e(17); /* Alarm? */ } } /* Test names that are too long. */ does_truncate = does_fs_truncate(); fd = creat(NameTooLong, 0777); if (does_truncate) { if (utime(NameTooLong, NULL) != 0) e(18); } else { if (utime(NameTooLong, NULL) != -1) e(19); if (errno != ENAMETOOLONG) e(20); } (void) close(fd); /* Make PathTooLong contain ././.../a */ PathTooLong[strlen(PathTooLong) - 2] = '/'; PathTooLong[strlen(PathTooLong) - 1] = 'a'; Creat("a"); if (utime(PathTooLong, NULL) != -1) e(21); if (errno != ENAMETOOLONG) e(22); /* Non existing file name. */ if (utime("nonexist", NULL) != -1) e(23); if (errno != ENOENT) e(24); /* Empty file name. */ if (utime("", NULL) != -1) e(25); if (errno != ENOENT) e(26); System("rm -rf ../DIR_35/*"); }
// we want to register games so we can run them from Discord client as discord-<appid>:// extern "C" DISCORD_EXPORT void Discord_Register(const char* applicationId, const char* command) { // Add a desktop file and update some mime handlers so that xdg-open does the right thing. const char* home = getenv("HOME"); if (!home) { return; } char exePath[1024]; if (!command || !command[0]) { if (readlink("/proc/self/exe", exePath, sizeof(exePath)) <= 0) { return; } command = exePath; } const char* destopFileFormat = "[Desktop Entry]\n" "Name=Game %s\n" "Exec=%s %%u\n" // note: it really wants that %u in there "Type=Application\n" "NoDisplay=true\n" "Categories=Discord;Games;\n" "MimeType=x-scheme-handler/discord-%s;\n"; char desktopFile[2048]; int fileLen = snprintf( desktopFile, sizeof(desktopFile), destopFileFormat, applicationId, command, applicationId); if (fileLen <= 0) { return; } char desktopFilename[256]; snprintf(desktopFilename, sizeof(desktopFilename), "/discord-%s.desktop", applicationId); char desktopFilePath[1024]; snprintf(desktopFilePath, sizeof(desktopFilePath), "%s/.local", home); if (!Mkdir(desktopFilePath)) { return; } strcat(desktopFilePath, "/share"); if (!Mkdir(desktopFilePath)) { return; } strcat(desktopFilePath, "/applications"); if (!Mkdir(desktopFilePath)) { return; } strcat(desktopFilePath, desktopFilename); FILE* fp = fopen(desktopFilePath, "w"); if (fp) { fwrite(desktopFile, 1, fileLen, fp); fclose(fp); } else { return; } char xdgMimeCommand[1024]; snprintf(xdgMimeCommand, sizeof(xdgMimeCommand), "xdg-mime default discord-%s.desktop x-scheme-handler/discord-%s", applicationId, applicationId); if (system(xdgMimeCommand) < 0) { fprintf(stderr, "Failed to register mime handler\n"); } }