apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From grega...@apache.org
Subject cvs commit: apr-site/apr2_0intro/TstAprRoutines aprfile.cpp aprmemory.cpp aprmisc.cpp aprsocket.cpp aprthreads.cpp ReadMe.txt StdAfx.cpp StdAfx.h TstAprRoutines.cpp TstAprRoutines.dsp TstAprRoutines.plg
Date Thu, 07 Jun 2001 21:38:14 GMT
gregames    01/06/07 14:38:14

  Added:       apr2_0intro/TstAprRoutines aprfile.cpp aprmemory.cpp
                        aprmisc.cpp aprsocket.cpp aprthreads.cpp ReadMe.txt
                        StdAfx.cpp StdAfx.h TstAprRoutines.cpp
                        TstAprRoutines.dsp TstAprRoutines.plg
  Log:
  add sample APR test routines
  
  Submitted by:	Christian Gross
  Reviewed by:	Greg Ames
  
  Revision  Changes    Path
  1.1                  apr-site/apr2_0intro/TstAprRoutines/aprfile.cpp
  
  Index: aprfile.cpp
  ===================================================================
  #include "stdafx.h"
  #include "apr_file_io.h"
  #include "apr_general.h"
  #include "apr_strings.h"
  
  static apr_pool_t *context;
  
  void TstDirectory() {
      apr_dir_t *dir;  
      apr_file_t *file = NULL;
      apr_size_t bytes;
      apr_finfo_t dirent;
  
  	printf( "Opening the root directory\n");
      if (apr_dir_open(&dir, "c:\\", context) != APR_SUCCESS) {
  		printf( "Could not open the root directory\n");
  		exit( -1);
      }
  
      printf( "Reading the directory\n");
      if ((apr_dir_read( &dirent, APR_FINFO_DIRENT, dir))  != APR_SUCCESS) {
  		printf( "Could not read the directory\n");
  		exit( -1);
      }
     
      do {
  		printf( "Entry is %s\n", dirent.name);
      } while (apr_dir_read( &dirent, 
  		APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_SIZE | APR_FINFO_MTIME, dir) == APR_SUCCESS);
  	return;
  }
  
  void TstReadWriteFile() {
  	char *buffer;
  	char ch;
  	int status;
  	apr_file_t *fd;
      apr_status_t rv;
      apr_finfo_t finfo;
  
      buffer = apr_pstrdup(context, "Hello world");
  	// Open the file for writing
  	printf( "Writing to a file \n");
      apr_file_open( &fd, "c:\\filetest.txt", APR_WRITE | APR_CREATE, -1, context);
  	int length = strlen(buffer);
      if( apr_file_write( fd, buffer, &length) != APR_SUCCESS) {
  		printf( "Yikes could not write\n");
  		exit( -1);
  	}
  	else {
  		printf( "Data (%s) was written to the file\n", buffer);
  	}
  	apr_file_close( fd);
  
  	// Getting some information about the file
      rv = apr_stat(&finfo, "c:\\filetest.txt", APR_FINFO_NORM, context);
      if (rv != APR_SUCCESS && rv != APR_INCOMPLETE) {
  		printf( "Could not get the file information\n");
          exit(1);
      }
  	printf( "File size %ld\n", finfo.size);
  
  	// Open the file for reading
  	printf( "Reading from the file\n");
      status = apr_file_open( &fd, "c:\\filetest.txt", APR_READ, -1, context);
      while (!status) {
          status = apr_file_getc(&ch, fd);
          if (status == APR_EOF ) {
  			printf( "\nAt the end of the file read\n");
  		}
          else if (status == APR_SUCCESS) {
  			printf( "%c", ch);
  		}
      }
  	apr_file_close( fd);
  	return;
  }
  
  void APRFiles() {
  	// Create the pool context
      if (apr_pool_create(&context, NULL) != APR_SUCCESS) {
          fprintf(stderr, "Couldn't allocate context.");
          exit(-1);
      }
  
  	TstReadWriteFile();
  	TstDirectory();
  
  	apr_pool_destroy( context);
  	return;
  }
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/aprmemory.cpp
  
  Index: aprmemory.cpp
  ===================================================================
  #include "stdafx.h"
  #include "apr_strings.h"
  #include "apr_pools.h"
  
  static apr_pool_t *context;
  static apr_pool_t *subMemoryPool, *subSubMemoryPool;
  
  static apr_status_t StringClear(void *data)
  {
  	// This function is called when apr_pool_destroy is called
  	printf( "The data to manipulate is (%s)\n", (char *)data);
      return APR_SUCCESS;
  }
  
  void TstSubDataSetting() {
  	char *buffer;
  	char *retBuffer;
  
  	if(( apr_pool_create( &subMemoryPool, context)) != APR_SUCCESS) {
  		printf( "Could not create memory sub-pool\n");
  		exit( -1);
  	}
      buffer = apr_pstrdup(subMemoryPool, "Hello World");
  	
  	// Create a buffer reference that corresponds to a specific index
      apr_pool_userdata_set( buffer, "TEST", StringClear, subMemoryPool);    
      apr_pool_userdata_get((void **)&retBuffer, "TEST", subMemoryPool);
  	apr_pool_destroy( subMemoryPool);
  }
  
  void TstSubStringAllocation() {
  	if(( apr_pool_create( &subMemoryPool, context)) != APR_SUCCESS) {
  		printf( "Could not create memory sub-pool\n");
  		exit( -1);
  	}
  	
  	// Example routines to show how to manipulate strings
  	char *buffer;
  	char *newBuffer;
  
      buffer = apr_pstrdup( subMemoryPool, "Hello world");
  	newBuffer = apr_pstrcat( subMemoryPool, buffer, " and yet more data", NULL);
  
  	apr_pool_destroy( subMemoryPool);
  	return;
  }
  
  void TstSubMemoryAllocation() {
  	// This function calls the above function, but also copies 
  	// the parent properties, which is context, this calls the function
  	// apr_pool_sub_make and sets the parent attributes as default
  	if(( apr_pool_create( &subMemoryPool, context)) != APR_SUCCESS) {
  		printf( "Could not create memory sub-pool\n");
  		exit( -1);
  	}
  
  	// Lets start by allocating memory
  	char *buffer;
  
  	// QUESTION...  Is this thread safe???? No lock on block splitting
  	// Flag ALLOC_USE_MALLOC uses malloc which would be thread safe
  	if(( buffer = (char *)apr_palloc( subMemoryPool, 100)) == NULL) {
  		printf( "Could not allocate memory\n");
  		exit( -1);
  	}
  	strcpy( buffer, "Hello world");
  
  	char *buffer2;
  
  	// Lets play with the pool memory, by first "clearing" the pool
  	apr_pool_clear( subMemoryPool);
  	if(( buffer2 = (char *)apr_palloc( subMemoryPool, 100)) == NULL) {
  		printf( "Could not allocate memory\n");
  		exit( -1);
  	}
  	if( buffer == buffer2) {
  		printf( "wow they match (but we expected this)\n");
  	}
  
  	// Now lets actually delete the pool memory, note that the above
  	// function is called, but the memory is actually yanked
  	apr_pool_destroy( subMemoryPool);
  
  	// *********************************************************************
  	// WARNING by default this will work as APR is installed
  	// Open up aprpools.h and uncomment the flags ALLOC_DEBUG and APR_POOL_DEBUG
  	// Then the following function call will properly fail
  	//if(( buffer2 = (char *)apr_palloc( subMemoryPool, 100)) == NULL) {
  	//	printf( "Could not allocate memory\n");
  	//	exit( -1);
  	//}
  	// *********************************************************************
  
  	if(( apr_pool_create( &subMemoryPool, context)) != APR_SUCCESS) {
  		printf( "Could not create memory sub-pool\n");
  		exit( -1);
  	}
  
  	// *********************************************************************
  	apr_pool_clear( context);
  	// The next function only works if APR_POOL_DEBUG is enabled
  	// The next set of functions do not work because apr_pool_clear actually
  	// destroys the sub pools
  	//if( apr_pool_is_ancestor( context, subMemoryPool) != false) {
  	//	printf( "Yes the pool have a parent child relationship\n");
  	//}
  	// Now lets allocate from the sub pool
  	//if(( buffer = (char *)apr_palloc( subMemoryPool, 100)) == NULL) {
  	//	printf( "Could not allocate memory\n");
  	//	exit( -1);
  	//}
  	// *********************************************************************
  }
  
  void TstSimpleMemoryAllocation() {
  	char *buffer;
  
  	if(( buffer = (char *)apr_palloc( context, 100)) == NULL) {
  		printf( "Could not allocate memory\n");
  		exit( -1);
  	}
  	strcpy( buffer, "Hello world");
  }
  
  void APRMemory() {
  	// Create the pool context
      if (apr_pool_create(&context, NULL) != APR_SUCCESS) {
  		printf( "Could not allocate context\n");
  		exit( -1);
      }
  
  	TstSimpleMemoryAllocation();
  	TstSubMemoryAllocation();
  	TstSubStringAllocation();
  	TstSubDataSetting();
  
  	// Clear the pool
  	apr_pool_destroy( context);
  	return;
  }
  
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/aprmisc.cpp
  
  Index: aprmisc.cpp
  ===================================================================
  #include "stdafx.h"
  #include "apr_general.h"
  #include "apr_strings.h"
  #include "apr_thread_proc.h"
  #include "apr_dso.h"
  #include "apr_errno.h"
  
  static apr_pool_t *context;
  
  #define LIB_NAME ""
  #define FILE_NAME "C:\\projects\\ApacheAPR\\TstApr\\SampleDLL\\Debug\\sampledll.dll"
  
  typedef int (*SampleFunc)(void);
  
  void TstDSO() {
      apr_dso_handle_t *h = NULL;
      apr_dso_handle_sym_t func = NULL;
      apr_status_t status;
  	SampleFunc function;
      int retval;
      char filename[256];   
  
  	printf( "Loading the DSO\n");
      if ((status = apr_dso_load(&h, FILE_NAME, context)) != APR_SUCCESS){
          char my_error[256];
          apr_strerror(status, my_error, sizeof(my_error));
          printf( "%s!\n", my_error);
          exit (-1);
      }
  
      if ((status = apr_dso_sym(&func, h, "fnSampleDLL")) != APR_SUCCESS) { 
          char my_error[256];
          apr_dso_error(h, my_error, sizeof(my_error));
          printf( "%s\n", my_error);
          exit (-1);
      }        
  
  	function = (SampleFunc)func;    
      retval = (*function)();
  
      if (apr_dso_unload(h) != APR_SUCCESS) {
          printf( "Failed unload!\n");
          exit (-1);
      }
  }
  
  void APRMisc() {
  	// Create the pool context
      if (apr_pool_create(&context, NULL) != APR_SUCCESS) {
          fprintf(stderr, "Couldn't allocate context.");
          exit(-1);
      }
  
  	//TstDSO();
  
  	apr_pool_destroy( context);
  	return;
  }
  
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/aprsocket.cpp
  
  Index: aprsocket.cpp
  ===================================================================
  #include "stdafx.h"
  #include "apr_general.h"
  #include "apr_strings.h"
  #include "apr_thread_proc.h"
  
  static apr_pool_t *context;
  
  void APRSocket() {
  	// Create the pool context
      if (apr_pool_create(&context, NULL) != APR_SUCCESS) {
          fprintf(stderr, "Couldn't allocate context.");
          exit(-1);
      }
  
  
  	apr_pool_destroy( context);
  	return;
  }
  
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/aprthreads.cpp
  
  Index: aprthreads.cpp
  ===================================================================
  #include "stdafx.h"
  #include "apr_general.h"
  #include "apr_strings.h"
  #include "apr_thread_proc.h"
  #include "apr_lock.h"
  
  static apr_pool_t *context;
  static apr_lock_t *lock;
  static long counter = 25000;
  
  void DeleteData( void *data) {
  	printf( "Initial Count is %ld\n", *((long *)data));
  	return;
  }
  
  void * APR_THREAD_FUNC ExThreadFunc1( void *data)
  {
  	long *count;
  	apr_threadkey_t *threadData;
  	long initialCount = *((long *)data);
  
  	if( apr_threadkey_private_create( &threadData, DeleteData, context) != APR_SUCCESS)
{
  		printf( "Could not create Private Data area");
  		exit( -1);
  	}
  	apr_threadkey_private_set( &initialCount, threadData);
  
  	if( apr_threadkey_private_get( (void **)&count, threadData) != APR_SUCCESS) {
  		printf( "Oops an error\n");
  		exit( -1);
  	}
  
      int i;
      for (i = 0; i < *count; i++) {
          apr_lock_acquire(lock);
          counter ++;
          apr_lock_release(lock);
      }
  	return NULL;
  } 
  
  void * APR_THREAD_FUNC ExThreadFunc2( void *data)
  {
  	while( counter > 0) {
          apr_lock_acquire( lock);
  		counter --;
          apr_lock_release( lock);
      }
  	return NULL;
  } 
  
  void TstThreadWithLock() {
  	apr_status_t status;
  	apr_thread_t *thread1;
  	apr_thread_t *thread2;
  	long initialCount = 1000;
  
      status = apr_lock_create( &lock, APR_MUTEX, APR_INTRAPROCESS, "my.lock", context);

  
  	if( apr_thread_create( &thread1, NULL, ExThreadFunc1, &initialCount, context) !=
APR_SUCCESS) {
  		printf( "Could not create the thread\n");
  		exit( -1);
  	}
  
  	
  	if( apr_thread_create( &thread2, NULL, ExThreadFunc2, NULL, context) != NULL) {
  		printf( "Could not create the thread\n");
  		exit( -1);
  	}
  
      apr_thread_join( &status, thread1);
      apr_thread_join( &status, thread2);
  		
  }
  
  void * APR_THREAD_FUNC ExThreadFunc( void *data)
  {
  	printf( "Hello world");
  	// Question: Does this really do anything
  	return NULL;
  } 
  
  void TstSimpleThread() {
  	apr_thread_t *thread;
  	
  	if( apr_thread_create(&thread, NULL, ExThreadFunc, NULL, context) != NULL) {
  		printf( "Could not create the thread\n");
  		exit( -1);
  	}
  	apr_status_t status;
  
      apr_thread_join( &status, thread);
  	return;
  }
  
  
  void APRThreads() {
  	// Create the pool context
      if (apr_pool_create(&context, NULL) != APR_SUCCESS) {
          fprintf(stderr, "Couldn't allocate context.");
          exit(-1);
      }
  
  	TstSimpleThread();
  	TstThreadWithLock();
  		
  	apr_pool_destroy( context);
  	return;
  }
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/ReadMe.txt
  
  Index: ReadMe.txt
  ===================================================================
  ========================================================================
         CONSOLE APPLICATION : TstAprRoutines
  ========================================================================
  
  
  AppWizard has created this TstAprRoutines application for you.  
  
  This file contains a summary of what you will find in each of the files that
  make up your TstAprRoutines application.
  
  TstAprRoutines.dsp
      This file (the project file) contains information at the project level and
      is used to build a single project or subproject. Other users can share the
      project (.dsp) file, but they should export the makefiles locally.
  
  TstAprRoutines.cpp
      This is the main application source file.
  
  
  /////////////////////////////////////////////////////////////////////////////
  Other standard files:
  
  StdAfx.h, StdAfx.cpp
      These files are used to build a precompiled header (PCH) file
      named TstAprRoutines.pch and a precompiled types file named StdAfx.obj.
  
  
  /////////////////////////////////////////////////////////////////////////////
  Other notes:
  
  AppWizard uses "TODO:" to indicate parts of the source code you
  should add to or customize.
  
  /////////////////////////////////////////////////////////////////////////////
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/StdAfx.cpp
  
  Index: StdAfx.cpp
  ===================================================================
  // stdafx.cpp : source file that includes just the standard includes
  //	TstAprRoutines.pch will be the pre-compiled header
  //	stdafx.obj will contain the pre-compiled type information
  
  #include "stdafx.h"
  
  // TODO: reference any additional headers you need in STDAFX.H
  // and not in this file
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/StdAfx.h
  
  Index: StdAfx.h
  ===================================================================
  // stdafx.h : include file for standard system include files,
  //  or project specific include files that are used frequently, but
  //      are changed infrequently
  //
  
  #if !defined(AFX_STDAFX_H__12BC5F39_5451_438A_80A9_4BCA0493E6DA__INCLUDED_)
  #define AFX_STDAFX_H__12BC5F39_5451_438A_80A9_4BCA0493E6DA__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  #include <apr.h>
  #include "apr_general.h"
  
  // TODO: reference additional headers your program requires here
  
  //{{AFX_INSERT_LOCATION}}
  // Microsoft Visual C++ will insert additional declarations immediately before the previous
line.
  
  #endif // !defined(AFX_STDAFX_H__12BC5F39_5451_438A_80A9_4BCA0493E6DA__INCLUDED_)
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/TstAprRoutines.cpp
  
  Index: TstAprRoutines.cpp
  ===================================================================
  // TstAprRoutines.cpp : Defines the entry point for the console application.
  //
  
  #include "stdafx.h"
  
  void APRFiles();
  void APRMemory();
  void APRThreads();
  void APRMisc();
  
  // Routine used to cleanup the APR when exiting
  static void closeapr(void)
  {
      apr_terminate();
  }
  
  int main(int argc, char* argv[])
  {
  	printf( "Initializing the APR\n");
      if (apr_initialize() != APR_SUCCESS) {
  		printf( "Could not initialize\n");
          exit(-1);
      }
      atexit(closeapr);
  
  	printf( "Testing APR file routines\n");
  	// Memory handling routines
  	APRMemory();
  	// File handling routines
  	APRFiles();
  	// Thread handling routines
  	APRThreads();
  	// Misc handling routines
  	APRMisc();
  	printf( "Done...\n");
  	return 0;
  }
  
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/TstAprRoutines.dsp
  
  Index: TstAprRoutines.dsp
  ===================================================================
  # Microsoft Developer Studio Project File - Name="TstAprRoutines" - Package Owner=<4>
  # Microsoft Developer Studio Generated Build File, Format Version 6.00
  # ** DO NOT EDIT **
  
  # TARGTYPE "Win32 (x86) Console Application" 0x0103
  
  CFG=TstAprRoutines - Win32 Debug
  !MESSAGE This is not a valid makefile. To build this project using NMAKE,
  !MESSAGE use the Export Makefile command and run
  !MESSAGE 
  !MESSAGE NMAKE /f "TstAprRoutines.mak".
  !MESSAGE 
  !MESSAGE You can specify a configuration when running NMAKE
  !MESSAGE by defining the macro CFG on the command line. For example:
  !MESSAGE 
  !MESSAGE NMAKE /f "TstAprRoutines.mak" CFG="TstAprRoutines - Win32 Debug"
  !MESSAGE 
  !MESSAGE Possible choices for configuration are:
  !MESSAGE 
  !MESSAGE "TstAprRoutines - Win32 Release" (based on "Win32 (x86) Console Application")
  !MESSAGE "TstAprRoutines - Win32 Debug" (based on "Win32 (x86) Console Application")
  !MESSAGE 
  
  # Begin Project
  # PROP AllowPerConfigDependencies 0
  # PROP Scc_ProjName ""
  # PROP Scc_LocalPath ""
  CPP=cl.exe
  RSC=rc.exe
  
  !IF  "$(CFG)" == "TstAprRoutines - Win32 Release"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 0
  # PROP BASE Output_Dir "Release"
  # PROP BASE Intermediate_Dir "Release"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 0
  # PROP Output_Dir "Release"
  # PROP Intermediate_Dir "Release"
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h"
/FD /c
  # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h"
/FD /c
  # ADD BASE RSC /l 0x1009 /d "NDEBUG"
  # ADD RSC /l 0x1009 /d "NDEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib
gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /subsystem:console /machine:I386
  
  !ELSEIF  "$(CFG)" == "TstAprRoutines - Win32 Debug"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 1
  # PROP BASE Output_Dir "Debug"
  # PROP BASE Intermediate_Dir "Debug"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 1
  # PROP Output_Dir "Debug"
  # PROP Intermediate_Dir "Debug"
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS"
/Yu"stdafx.h" /FD /GZ /c
  # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR
/Yu"stdafx.h" /FD /GZ /c
  # ADD BASE RSC /l 0x1009 /d "_DEBUG"
  # ADD RSC /l 0x1009 /d "_DEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib
gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
  # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
  
  !ENDIF 
  
  # Begin Target
  
  # Name "TstAprRoutines - Win32 Release"
  # Name "TstAprRoutines - Win32 Debug"
  # Begin Group "Source Files"
  
  # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
  # Begin Source File
  
  SOURCE=.\aprfile.cpp
  # End Source File
  # Begin Source File
  
  SOURCE=.\aprmemory.cpp
  # End Source File
  # Begin Source File
  
  SOURCE=.\aprmisc.cpp
  # End Source File
  # Begin Source File
  
  SOURCE=.\aprthreads.cpp
  # End Source File
  # Begin Source File
  
  SOURCE=.\StdAfx.cpp
  # ADD CPP /Yc"stdafx.h"
  # End Source File
  # Begin Source File
  
  SOURCE=.\TstAprRoutines.cpp
  # End Source File
  # End Group
  # Begin Group "Header Files"
  
  # PROP Default_Filter "h;hpp;hxx;hm;inl"
  # Begin Source File
  
  SOURCE=.\StdAfx.h
  # End Source File
  # End Group
  # Begin Group "Resource Files"
  
  # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
  # End Group
  # Begin Group "Library Files"
  
  # PROP Default_Filter ""
  # Begin Source File
  
  SOURCE=..\..\..\bin\libapr.lib
  # End Source File
  # End Group
  # End Target
  # End Project
  
  
  
  1.1                  apr-site/apr2_0intro/TstAprRoutines/TstAprRoutines.plg
  
  Index: TstAprRoutines.plg
  ===================================================================
  <html>
  <body>
  <pre>
  <h1>Build Log</h1>
  <h3>
  --------------------Configuration: TstAprRoutines - Win32 Debug--------------------
  </h3>
  <h3>Command Lines</h3>
  Creating temporary file "C:\DOCUME~1\cgross\LOCALS~1\Temp\RSP16.tmp" with contents
  [
  /nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"Debug/"
/Fp"Debug/TstAprRoutines.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c 
  "C:\projects\ApacheAPR\TstApr\TstAprRoutines\aprmisc.cpp"
  "C:\projects\ApacheAPR\TstApr\TstAprRoutines\TstAprRoutines.cpp"
  ]
  Creating command line "cl.exe @C:\DOCUME~1\cgross\LOCALS~1\Temp\RSP16.tmp" 
  Creating temporary file "C:\DOCUME~1\cgross\LOCALS~1\Temp\RSP17.tmp" with contents
  [
  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib
oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
/nologo /subsystem:console /incremental:yes /pdb:"Debug/TstAprRoutines.pdb" /debug /machine:I386
/out:"Debug/TstAprRoutines.exe" /pdbtype:sept 
  .\Debug\aprfile.obj
  .\Debug\aprmemory.obj
  .\Debug\aprmisc.obj
  .\Debug\aprthreads.obj
  .\Debug\StdAfx.obj
  .\Debug\TstAprRoutines.obj
  ..\..\..\bin\libapr.lib
  ]
  Creating command line "link.exe @C:\DOCUME~1\cgross\LOCALS~1\Temp\RSP17.tmp"
  <h3>Output Window</h3>
  Compiling...
  aprmisc.cpp
  C:\projects\ApacheAPR\TstApr\TstAprRoutines\aprmisc.cpp(21) : warning C4101: 'filename'
: unreferenced local variable
  TstAprRoutines.cpp
  Generating Code...
  Linking...
  Creating command line "bscmake.exe /nologo /o"Debug/TstAprRoutines.bsc"  .\Debug\StdAfx.sbr
.\Debug\aprfile.sbr .\Debug\aprmemory.sbr .\Debug\aprmisc.sbr .\Debug\aprthreads.sbr .\Debug\TstAprRoutines.sbr"
  Creating browse info file...
  <h3>Output Window</h3>
  
  
  
  <h3>Results</h3>
  TstAprRoutines.exe - 0 error(s), 1 warning(s)
  </pre>
  </body>
  </html>
  
  
  

Mime
View raw message