Ejemplo n.º 1
0
int __cdecl main( int argc, char **argv )

{

    STARTUPINFOW si;
    PROCESS_INFORMATION pi;

    static FILE * fp;

    DWORD dwFileLength;
    DWORD dwDirLength;
    DWORD dwSize;

    size_t cslen;

    char szReadStringA[256];

    char szAbsPathNameA[_MAX_PATH];
    WCHAR szDirNameW[_MAX_DIR];
    WCHAR absPathBuf[_MAX_PATH];
    WCHAR *szAbsPathNameW;


    if(0 != (PAL_Initialize(argc, argv)))
    {
        return ( FAIL );
    }

    ZeroMemory ( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory ( &pi, sizeof(pi) );

    szAbsPathNameW=&absPathBuf[0];
    dwFileLength = wcslen( szChildFileW );

    dwDirLength = GetCurrentDirectory(_MAX_PATH, szDirNameW);

    if (0 == dwDirLength)
    {
        Fail ("GetCurrentDirectory call failed.  Could not get "
              "current working directory\n.  Exiting.\n");
    }

    dwSize = mkAbsoluteFilenameW( szDirNameW, dwDirLength, szChildFileW,
                                  dwFileLength, szAbsPathNameW );

    if (0 == dwSize)
    {
        Fail ("Palsuite Code: mkAbsoluteFilename() call failed.  Could "
              "not build absolute path name to file\n.  Exiting.\n");
    }

    if ( !CreateProcessW ( NULL,
                           szAbsPathNameW,
                           NULL,
                           NULL,
                           FALSE,
                           CREATE_NEW_CONSOLE,
                           NULL,
                           NULL,
                           &si,
                           &pi )
       )
    {
        Fail ( "CreateProcess call failed.  GetLastError returned %d\n",
               GetLastError() );
    }

    WaitForSingleObject ( pi.hProcess, INFINITE );

    szAbsPathNameW=&absPathBuf[0];

    dwFileLength = wcslen( szCommonFileW );

    dwSize = mkAbsoluteFilenameW( szDirNameW, dwDirLength, szCommonFileW,
                                  dwFileLength, szAbsPathNameW );

    /* set the string length for the open call*/

    if (0 == dwSize)
    {
        Fail ("Palsuite Code: mkAbsoluteFilename() call failed.  Could "
              "not build absolute path name to file\n.  Exiting.\n");
    }

    WideCharToMultiByte (CP_ACP, 0, szAbsPathNameW, -1, szAbsPathNameA,
                         (dwSize + 1), NULL, NULL);

    if ( NULL == ( fp = fopen ( szAbsPathNameA , "r" ) ) )
    {
        Fail ("%s\nunable to open %s\nfor reading.  Exiting.\n", argv[0],
              szAbsPathNameA );
    }

    cslen = strlen ( szCommonStringA );

    if ( NULL == fgets( szReadStringA, (cslen + 1), fp ))
    {
        /*
         * A return value of NULL indicates an error condition or an
         * EOF condition
         */
        Fail ("%s\nunable to read file\n%s\nszReadStringA is %s\n"
              "Exiting.\n", argv[0], szAbsPathNameA,
              szReadStringA );
    }

    if ( 0 != strncmp( szReadStringA, szCommonStringA, cslen ))
    {
        Fail ("string comparison failed.\n  szReadStringA is %s and\n"
              "szCommonStringA is %s\n", szReadStringA,
              szCommonStringA );
    }
    else
    {
        Trace ("string comparison passed.\n");
    }

    if (0 != (fclose ( fp )))
    {
        Trace ("%s unable to close file %s.  This may cause a file pointer "
               "leak.  Continuing.\n", argv[0], szAbsPathNameA );
    }

    /* Close process and thread handle */
    CloseHandle ( pi.hProcess );
    CloseHandle ( pi.hThread );

    PAL_Terminate();
    return ( PASS );

}
Ejemplo n.º 2
0
int __cdecl main( int argc, char **argv ) 
{

    static FILE * fp;

    DWORD dwFileLength;
    DWORD dwDirLength;
    DWORD dwSize;
    
    char *szAbsPathNameA;
    WCHAR szDirNameW[_MAX_DIR];
    WCHAR szAbsPathNameW[_MAX_PATH];

    if(0 != (PAL_Initialize(argc, argv)))
    {
        return ( FAIL );
    }

    dwDirLength = GetCurrentDirectory( _MAX_PATH, szDirNameW );

    if (0 == dwDirLength) 
    {
	Fail ("GetCurrentDirectory call failed.  Could not get "
		"current working directory\n.  Exiting.\n");
    }

    dwFileLength = wcslen( szCommonFileW );

    dwSize = mkAbsoluteFilenameW( szDirNameW, dwDirLength, szCommonFileW, 
				  dwFileLength, szAbsPathNameW );

    if (0 == dwSize)
    {
	Fail ("Palsuite Code: mkAbsoluteFilename() call failed.  Could "
		"not build absolute path name to file\n.  Exiting.\n");
    }
    
    /* set the string length for the open call */
    szAbsPathNameA = malloc (dwSize +1);    

    if (NULL == szAbsPathNameA)
    {
	Fail ("Unable to malloc (%d) bytes.  Exiting\n", (dwSize +1) );
    }

    WideCharToMultiByte (CP_ACP, 0, szAbsPathNameW, -1, szAbsPathNameA, 
			 (dwSize + 1), NULL, NULL); 

    if ( NULL == ( fp = fopen ( szAbsPathNameA , "w+" ) ) ) 
    {
       /* 
	 * A return value of NULL indicates an error condition or an
	 * EOF condition 
	 */
	Fail ("%s unable to open %s for writing.  Exiting.\n", argv[0]
	      , szAbsPathNameA );
    }

    free (szAbsPathNameA);

    if ( 0 >= ( fprintf ( fp, "%s", szCommonStringA )))
    {
	Fail("%s unable to write to %s. Exiting.\n", argv[0]
	     , szAbsPathNameA );
    }
    
    if (0 != (fclose ( fp ))) 
    {
	Fail ("%s unable to close file %s.  Pid may not be "
	      "written to file. Exiting.\n", argv[0], szAbsPathNameA );
    }

    PAL_Terminate();
    return ( PASS );    
    
}