CFileLogger::CFileLogger(COptions *pOptions) { m_hLogFile = INVALID_HANDLE_VALUE; m_pOptions = pOptions; m_pFileName = NULL; CheckLogFile(); }
//----------------------------------------------------------------------------- // Purpose: // Input : argc - // argv[] - // Output : int //----------------------------------------------------------------------------- int main( int argc, char* argv[] ) { SpewOutputFunc( SpewFunc ); SpewActivate( "demoinfo", 2 ); int i; for ( i=1 ; i<argc ; i++) { if ( argv[ i ][ 0 ] == '-' ) { switch( argv[ i ][ 1 ] ) { case 'l': uselogfile = true; break; case 'v': verbose = true; break; case 'g': ++i; break; default: printusage(); break; } } } if ( argc < 2 || ( i != argc ) ) { PrintHeader(); printusage(); } CheckLogFile(); PrintHeader(); vprint( 0, " Info for %s..\n", argv[ i - 1 ] ); char workingdir[ 256 ]; workingdir[0] = 0; Q_getwd( workingdir, sizeof( workingdir ) ); if ( !FileSystem_Init( NULL, 0, FS_INIT_FULL ) ) return 1; // Add this so relative filenames work. g_pFullFileSystem->AddSearchPath( workingdir, "game", PATH_ADD_TO_HEAD ); // Load the demo CSmoothingContext context; LoadSmoothingInfo( argv[ i - 1 ], context ); // Note to tool makers: // Do your work here!!! //Performsmoothing( context ); // Save out updated .dem file // UNCOMMENT THIS TO ENABLE OUTPUTTING NEW .DEM FILES!!! // SaveSmoothingInfo( argv[ i - 1 ], context ); FileSystem_Term(); return 0; }
static void SalvageServer(void) { int pid, ret; struct SalvageQueueNode * node; pthread_t tid; pthread_attr_t attrs; int slot; VolumePackageOptions opts; /* All entries to the log will be appended. Useful if there are * multiple salvagers appending to the log. */ CheckLogFile((char *)AFSDIR_SERVER_SALSRVLOG_FILEPATH); #ifndef AFS_NT40_ENV #ifdef AFS_LINUX20_ENV fcntl(fileno(logFile), F_SETFL, O_APPEND); /* Isn't this redundant? */ #else fcntl(fileno(logFile), F_SETFL, FAPPEND); /* Isn't this redundant? */ #endif #endif setlinebuf(logFile); fprintf(logFile, "%s\n", cml_version_number); Log("Starting OpenAFS Online Salvage Server %s (%s)\n", SalvageVersion, commandLine); /* Get and hold a lock for the duration of the salvage to make sure * that no other salvage runs at the same time. The routine * VInitVolumePackage2 (called below) makes sure that a file server or * other volume utilities don't interfere with the salvage. */ /* even demand attach online salvager * still needs this because we don't want * a stand-alone salvager to conflict with * the salvager daemon */ ObtainSharedSalvageLock(); child_slot = (int *) malloc(Parallel * sizeof(int)); assert(child_slot != NULL); memset(child_slot, 0, Parallel * sizeof(int)); /* initialize things */ VOptDefaults(salvageServer, &opts); if (VInitVolumePackage2(salvageServer, &opts)) { Log("Shutting down: errors encountered initializing volume package\n"); Exit(1); } DInit(10); queue_Init(&pending_q); queue_Init(&log_cleanup_queue); assert(pthread_mutex_init(&worker_lock, NULL) == 0); assert(pthread_cond_init(&worker_cv, NULL) == 0); assert(pthread_cond_init(&log_cleanup_queue.queue_change_cv, NULL) == 0); assert(pthread_attr_init(&attrs) == 0); /* start up the reaper and log cleaner threads */ assert(pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_DETACHED) == 0); assert(pthread_create(&tid, &attrs, &SalvageChildReaperThread, NULL) == 0); assert(pthread_create(&tid, &attrs, &SalvageLogCleanupThread, NULL) == 0); assert(pthread_create(&tid, &attrs, &SalvageLogScanningThread, NULL) == 0); /* loop forever serving requests */ while (1) { node = SALVSYNC_getWork(); assert(node != NULL); Log("dispatching child to salvage volume %u...\n", node->command.sop.parent); VOL_LOCK; /* find a slot */ for (slot = 0; slot < Parallel; slot++) { if (!child_slot[slot]) break; } assert (slot < Parallel); do_fork: pid = Fork(); if (pid == 0) { VOL_UNLOCK; ret = DoSalvageVolume(node, slot); Exit(ret); } else if (pid < 0) { Log("failed to fork child worker process\n"); sleep(1); goto do_fork; } else { child_slot[slot] = pid; node->pid = pid; VOL_UNLOCK; assert(pthread_mutex_lock(&worker_lock) == 0); current_workers++; /* let the reaper thread know another worker was spawned */ assert(pthread_cond_broadcast(&worker_cv) == 0); /* if we're overquota, wait for the reaper */ while (current_workers >= Parallel) { assert(pthread_cond_wait(&worker_cv, &worker_lock) == 0); } assert(pthread_mutex_unlock(&worker_lock) == 0); } } }
//----------------------------------------------------------------------------- // Purpose: // Input : argc - // argv[] - // Output : int //----------------------------------------------------------------------------- int main( int argc, char* argv[] ) { SpewOutputFunc( SpewFunc ); SpewActivate( "unusedcontent", 2 ); CommandLine()->CreateCmdLine( argc, argv ); int i=1; for ( i ; i<argc ; i++) { if ( argv[ i ][ 0 ] == '-' ) { switch( argv[ i ][ 1 ] ) { case 'l': uselogfile = true; break; case 'v': verbose = true; break; case 'r': showreferencedfiles = true; break; case 'd': spewdeletions = true; break; case 'i': immediatedelete = true; break; case 'w': printwhitelist = true; break; case 'm': showmapfileusage = true; break; case 'g': // Just skip -game Assert( !Q_stricmp( argv[ i ], "-game" ) ); ++i; break; case 'f': // grab reslists folder { ++i; Q_strncpy( g_szReslistDir, argv[ i ], sizeof( g_szReslistDir ) ); Q_strlower( g_szReslistDir ); Q_FixSlashes( g_szReslistDir ); Q_AppendSlash( g_szReslistDir, sizeof( g_szReslistDir ) ); } break; default: printusage(); break; } } } if ( argc < 3 || ( i != argc ) ) { PrintHeader(); printusage(); return 0; } CheckLogFile(); PrintHeader(); vprint( 0, " Using reslist dir '%s'\n", g_szReslistDir ); vprint( 0, " Looking for extraneous content...\n" ); char resfile[ 256 ]; strcpy( resfile, argv[ i - 1 ] ); vprint( 0, " Comparing results of resfile (%s) with files under current directory...\n", resfile ); char workingdir[ 256 ]; workingdir[0] = 0; Q_getwd( workingdir, sizeof( workingdir ) ); // If they didn't specify -game on the command line, use VPROJECT. CmdLib_InitFileSystem( workingdir ); filesystem = (IFileSystem *)(CmdLib_GetFileSystemFactory()( FILESYSTEM_INTERFACE_VERSION, NULL )); if ( !filesystem ) { AssertMsg( 0, "Failed to create/get IFileSystem" ); return 1; } g_pFullFileSystem->RemoveAllSearchPaths(); g_pFullFileSystem->AddSearchPath(gamedir, "GAME"); Q_strlower( gamedir ); Q_FixSlashes( gamedir ); // //ProcessMaterialsDirectory( vmtdir ); // find out the mod dir name Q_strncpy( modname, gamedir, sizeof(modname) ); modname[ strlen(modname) - 1] = 0; if ( strrchr( modname, '\\' ) ) { Q_strncpy( modname, strrchr( modname, '\\' ) + 1, sizeof(modname) ); } else { Q_strncpy( modname, "", sizeof(modname) ); } vprint( 1, "Mod Name:%s\n", modname); BuildCheckdirList(); BuildWhiteList(); vprint( 0, "Building aggregate file list from resfile output\n" ); CUtlRBTree< ReferencedFile, int > referencedfiles( 0, 0, RefFileLessFunc ); CUtlVector< UnusedContent::CUtlSymbol > resfiles; BuildReferencedFileList( resfiles, referencedfiles, resfile ); vprint( 0, "found %i files\n\n", referencedfiles.Count() ); vprint( 0, "Building list of all game content files\n" ); CUtlVector< FileEntry > contentfiles; CUtlVector< FileEntry > otherfiles; BuildFileList( 0, contentfiles, &otherfiles, "", 0 ); vprint( 0, "found %i files in content tree\n\n", contentfiles.Count() ); Correlate( referencedfiles, contentfiles, modname ); // now output the files not referenced in the whitelist or general reslists filesystem->RemoveFile( CFmtStr( "%sunreferenced_files.lst", g_szReslistDir ), "GAME" ); int c = otherfiles.Count(); for ( i = 0; i < c; ++i ) { FileEntry & entry = otherfiles[ i ]; char const *name = g_Analysis.symbols.String( entry.sym ); logprint( CFmtStr( "%sunreferenced_files.lst", g_szReslistDir ), "\"%s\\%s\"\n", modname, name ); } // also include the files from deletions.bat, as we don't actually run that now c = contentfiles.Count(); for ( i = 0; i < c; ++i ) { FileEntry & entry = contentfiles[ i ]; if ( entry.referenced != REFERENCED_NO ) continue; char const *fn = g_Analysis.symbols.String( entry.sym ); logprint( CFmtStr( "%sunreferenced_files.lst", g_szReslistDir ), "\"%s\\%s\"\n", modname, fn ); } FileSystem_Term(); return 0; }
//----------------------------------------------------------------------------- // Purpose: // Input : argc - // argv[] - // Output : int //----------------------------------------------------------------------------- int main( int argc, char* argv[] ) { SpewOutputFunc( SpewFunc ); int i = 1; for (i ; i<argc ; i++) { if ( argv[ i ][ 0 ] == '-' ) { switch( argv[ i ][ 1 ] ) { case 'l': uselogfile = true; break; case 'v': verbose = true; break; case 'a': checkani = true; break; default: printusage(); break; } } } if ( argc < 3 || ( i != argc ) ) { vprint( 0, "Valve Software - mdlcheck.exe (%s)\n", __DATE__ ); vprint( 0, "--- Source Model Consistency Checker ---\n" ); printusage(); } CheckLogFile(); vprint( 0, "Valve Software - mdlcheck.exe (%s)\n", __DATE__ ); vprint( 0, "--- Source Model Consistency Checker ---\n" ); vprint( 0, " Looking for messed up .qc and .mdl files...\n" ); char modelsources[ 256 ]; strcpy( modelsources, argv[ i - 2 ] ); char modelsdir[ 256 ]; strcpy( modelsdir, argv[ i - 1 ] ); if ( !strstr( modelsdir, "models" ) ) { vprint( 0, "Models dir %s looks invalid (format: u:/tf2/hl2/models)\n", modelsdir ); return 0; } Q_StripTrailingSlash( modelsources ); Q_StripTrailingSlash( modelsdir ); ProcessSourceDirectory( modelsources ); ProcessModelsDirectory( modelsdir ); CheckForUnbuiltModels( ); return 0; }
//----------------------------------------------------------------------------- // Purpose: // Input : argc - // argv[] - // Output : int //----------------------------------------------------------------------------- int main( int argc, char* argv[] ) { SpewOutputFunc( SpewFunc ); SpewActivate( "vcd_sound_check", 2 ); int i=1; for ( i ; i<argc ; i++) { if ( argv[ i ][ 0 ] == '-' ) { switch( argv[ i ][ 1 ] ) { case 'l': uselogfile = true; break; case 'v': verbose = true; break; case 'm': spewmoveto = true; break; case 'o': vcdonly = true; break; default: printusage(); break; } } } if ( argc < 3 || ( i != argc ) ) { PrintHeader(); printusage(); } CheckLogFile(); PrintHeader(); vprint( 0, " Looking for .wav files not referenced in .vcd files...\n" ); char sounddir[ 256 ]; char vcddir[ 256 ]; strcpy( sounddir, argv[ i - 2 ] ); strcpy( vcddir, argv[ i - 1 ] ); if ( !strstr( sounddir, "sound" ) ) { vprint( 0, "Sound dir %s looks invalid (format: u:/tf2/hl2/sound/vo)\n", sounddir ); return 0; } if ( !strstr( vcddir, "scenes" ) ) { vprint( 0, ".vcd dir %s looks invalid (format: u:/tf2/hl2/scenes)\n", vcddir ); return 0; } char workingdir[ 256 ]; workingdir[0] = 0; Q_getwd( workingdir, sizeof( workingdir ) ); // If they didn't specify -game on the command line, use VPROJECT. CmdLib_InitFileSystem( workingdir ); CSysModule *pSoundEmitterModule = g_pFullFileSystem->LoadModule( "soundemittersystem.dll" ); if ( !pSoundEmitterModule ) { vprint( 0, "Sys_LoadModule( soundemittersystem.dll ) failed!\n" ); return 0; } CreateInterfaceFn hSoundEmitterFactory = Sys_GetFactory( pSoundEmitterModule ); if ( !hSoundEmitterFactory ) { vprint( 0, "Sys_GetFactory on soundemittersystem.dll failed!\n" ); return 0; } soundemitter = ( ISoundEmitterSystemBase * )hSoundEmitterFactory( SOUNDEMITTERSYSTEM_INTERFACE_VERSION, NULL ); if ( !soundemitter ) { vprint( 0, "Couldn't get interface %s from soundemittersystem.dll!\n", SOUNDEMITTERSYSTEM_INTERFACE_VERSION ); return 0; } filesystem = (IFileSystem *)(CmdLib_GetFileSystemFactory()( FILESYSTEM_INTERFACE_VERSION, NULL )); if ( !filesystem ) { AssertMsg( 0, "Failed to create/get IFileSystem" ); return 1; } Q_FixSlashes( gamedir ); Q_strlower( gamedir ); vprint( 0, "game dir %s\nsounds dir %s\nvcd dir %s\n\n", gamedir, sounddir, vcddir ); Q_StripTrailingSlash( sounddir ); Q_StripTrailingSlash( vcddir ); filesystem->RemoveFile( "moveto.txt", "GAME" ); // //ProcessMaterialsDirectory( vmtdir ); vprint( 0, "Initializing sound emitter system\n" ); soundemitter->Connect( FileSystem_GetFactory() ); soundemitter->Init(); vprint( 0, "Loaded %i sounds\n", soundemitter->GetSoundCount() ); vprint( 0, "Building list of .vcd files\n" ); CUtlVector< CUtlSymbol > vcdfiles; BuildFileList( vcdfiles, vcddir, ".vcd" ); vprint( 0, "found %i .vcd files\n\n", vcdfiles.Count() ); vprint( 0, "Building list of known .wav files\n" ); CUtlVector< CUtlSymbol > wavfiles; BuildFileList( wavfiles, sounddir, ".wav" ); vprint( 0, "found %i .wav files\n\n", wavfiles.Count() ); CorrelateWavsAndVCDs( vcdfiles, wavfiles ); soundemitter->Shutdown(); soundemitter = 0; g_pFullFileSystem->UnloadModule( pSoundEmitterModule ); FileSystem_Term(); return 0; }