You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							188 lines
						
					
					
						
							4.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							188 lines
						
					
					
						
							4.8 KiB
						
					
					
				
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * File:        test/scratch/test.scratch.pseudoUNIX/test.scratch.pseudoUNIX.c
							 | 
						|
								 *
							 | 
						|
								 * Purpose:     Implementation file for the pseudoUNIX.test project.
							 | 
						|
								 *
							 | 
						|
								 * Created:     23rd September 2006
							 | 
						|
								 * Updated:     6th August 2012
							 | 
						|
								 *
							 | 
						|
								 * Status:      Wizard-generated
							 | 
						|
								 *
							 | 
						|
								 * License:     (Licensed under the Synesis Software Open License)
							 | 
						|
								 *
							 | 
						|
								 *              Copyright (c) 2006-2012, Synesis Software Pty Ltd.
							 | 
						|
								 *              All rights reserved.
							 | 
						|
								 *
							 | 
						|
								 *              www:        http://www.synesis.com.au/software
							 | 
						|
								 *
							 | 
						|
								 * ////////////////////////////////////////////////////////////////////// */
							 | 
						|
								
							 | 
						|
								/* Pantheios Header Files */
							 | 
						|
								#include <pantheios/pantheios.h>
							 | 
						|
								#include <pantheios/implicit_link/core.h>
							 | 
						|
								#include <pantheios/implicit_link/fe.simple.h>
							 | 
						|
								#if defined(unix) || \
							 | 
						|
								    defined(__unix) || \
							 | 
						|
								    defined(__unix__)
							 | 
						|
								# include <pantheios/implicit_link/be.fprintf.h>
							 | 
						|
								#elif defined(_WIN32) || \
							 | 
						|
								      defined(WIN32)
							 | 
						|
								# include <pantheios/implicit_link/be.WindowsConsole.h>
							 | 
						|
								#endif /* operating system */
							 | 
						|
								
							 | 
						|
								/* STLSoft Header Files */
							 | 
						|
								#include <stlsoft/stlsoft.h>
							 | 
						|
								
							 | 
						|
								/* PlatformSTL Header Files */
							 | 
						|
								#include <platformstl/platformstl.h>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/* UNIXEm Header Files */
							 | 
						|
								#include <unixem/unixem.h>
							 | 
						|
								#include <unixem/implicit_link.h>
							 | 
						|
								
							 | 
						|
								/* Standard C Header Files */
							 | 
						|
								#include <stdio.h>
							 | 
						|
								#include <stdlib.h>
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Macros and definitions
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#ifdef true
							 | 
						|
								# undef true
							 | 
						|
								#endif /* true */
							 | 
						|
								#ifdef false
							 | 
						|
								# undef false
							 | 
						|
								#endif /* false */
							 | 
						|
								#define true    (1)
							 | 
						|
								#define false   (0)
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Globals
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#if defined(_DEBUG) || \
							 | 
						|
								    defined(_SYB_DEBUG)
							 | 
						|
								static int  s_bDebugging                =   true;
							 | 
						|
								#else /* ? debug */
							 | 
						|
								static int  s_bDebugging                =   false;
							 | 
						|
								#endif /* debug */
							 | 
						|
								
							 | 
						|
								PANTHEIOS_EXTERN_C PAN_CHAR_T const PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("pseudoUNIX.test");
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Typedefs
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Forward declarations
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								static void usage(int bExit, char const *reason, int invalidArg, int argc, char **argv);
							 | 
						|
								
							 | 
						|
								/* ////////////////////////////////////////////////////////////////////// */
							 | 
						|
								
							 | 
						|
								int main(int argc, char *argv[])
							 | 
						|
								{
							 | 
						|
								    int bVerbose    =   1;
							 | 
						|
								
							 | 
						|
								    if(pantheios_init() < 0)
							 | 
						|
								    {
							 | 
						|
								        return EXIT_FAILURE;
							 | 
						|
								    }
							 | 
						|
								    else
							 | 
						|
								    {
							 | 
						|
								        pantheios_init();
							 | 
						|
								
							 | 
						|
								        pantheios_init();
							 | 
						|
								        pantheios_uninit();
							 | 
						|
								
							 | 
						|
								        pantheios_init();
							 | 
						|
								        pantheios_uninit();
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        pantheios_getNextBackEndId();
							 | 
						|
								
							 | 
						|
								        { int i; for(i = 1; i < argc; ++i)
							 | 
						|
								        {
							 | 
						|
								            char const  *const  arg =   argv[i];
							 | 
						|
								
							 | 
						|
								            if(arg[0] == '-')
							 | 
						|
								            {
							 | 
						|
								                if(arg[1] == '-')
							 | 
						|
								                {
							 | 
						|
								                    /* -- arguments */
							 | 
						|
								                    usage(1, "Invalid argument(s) specified", i, argc, argv);
							 | 
						|
								                }
							 | 
						|
								                else
							 | 
						|
								                {
							 | 
						|
								                    /* - arguments */
							 | 
						|
								                    switch(arg[1])
							 | 
						|
								                    {
							 | 
						|
								                        case    '?':
							 | 
						|
								                            usage(1, NULL, -1, argc, argv);
							 | 
						|
								                            break;
							 | 
						|
								                        case    's':
							 | 
						|
								                            bVerbose    =   0;
							 | 
						|
								                            break;
							 | 
						|
								                        case    'v':
							 | 
						|
								                            bVerbose    =   1;
							 | 
						|
								                            break;
							 | 
						|
								                        default:
							 | 
						|
								                            usage(1, "Invalid argument(s) specified", i, argc, argv);
							 | 
						|
								                            break;
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								            else
							 | 
						|
								            {
							 | 
						|
								                /* other arguments */
							 | 
						|
								                usage(1, "Invalid argument(s) specified", i, argc, argv);
							 | 
						|
								            }
							 | 
						|
								        }}
							 | 
						|
								
							 | 
						|
								        pantheios_uninit();
							 | 
						|
								
							 | 
						|
								        pantheios_uninit();
							 | 
						|
								
							 | 
						|
								        return EXIT_SUCCESS;
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/* ////////////////////////////////////////////////////////////////////// */
							 | 
						|
								
							 | 
						|
								static void usage(int bExit, char const *reason, int invalidArg, int argc, char **argv)
							 | 
						|
								{
							 | 
						|
								    FILE    *stm    =   (NULL == reason) ? stdout : stderr;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    fprintf(stm, "\n");
							 | 
						|
								    fprintf(stm, "  pseudoUNIX.test\n\n");
							 | 
						|
								    fprintf(stm, "\n");
							 | 
						|
								
							 | 
						|
								    if(NULL != reason)
							 | 
						|
								    {
							 | 
						|
								        fprintf(stm, "  Error: %s\n", reason);
							 | 
						|
								        fprintf(stm, "\n");
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    if(0 < invalidArg)
							 | 
						|
								    {
							 | 
						|
								        fprintf(stm, "  First invalid argument #%d: %s\n", invalidArg, argv[invalidArg]);
							 | 
						|
								        fprintf(stm, "  Arguments were (first bad marked *):\n\n");
							 | 
						|
								        { int i; for(i = 1; i < argc; ++i)
							 | 
						|
								        {
							 | 
						|
								            fprintf(stm, "  %s%s\n", (i == invalidArg) ? "* " : "  ", argv[i]);
							 | 
						|
								        }}
							 | 
						|
								        fprintf(stm, "\n");
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    if(bExit)
							 | 
						|
								    {
							 | 
						|
								        exit(EXIT_FAILURE);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/* ///////////////////////////// end of file //////////////////////////// */
							 |