1 
2 /*
3  * Copyright � 2001 Novell, Inc. All Rights Reserved.
4  *
5  * You may distribute under the terms of either the GNU General Public
6  * License or the Artistic License, as specified in the README file.
7  *
8  */
9 
10 /*
11  * FILENAME		:	NWUtil.h
12  * DESCRIPTION	:	Utility functions for NetWare implementation of Perl.
13  * Author		:	HYAK, SGP
14  * Date			:	January 2001.
15  *
16  */
17 
18 
19 
20 #ifndef __NWUtil_H__
21 #define __NWUtil_H__
22 
23 
24 #include "stdio.h"
25 #include <stdlib.h>
26 #include "win32ish.h"		// For "BOOL", "TRUE" and "FALSE"
27 
28 
29 #ifdef MPK_ON
30 	#include <mpktypes.h>
31 	#include <mpkapis.h>
32 #else
33 	#include <nwsemaph.h>
34 #endif	//MPK_ON
35 
36 
37 // Name of console command to invoke perl
38 #define PERL_COMMAND_NAME "perl"
39 
40 // Name of console command to load an NLM
41 #define LOAD_COMMAND "load"
42 
43 
44 typedef struct tagCommandLineParser
45 {
46 	BOOL    m_noScreen;
47 	BOOL	m_AutoDestroy;
48 	BOOL    m_isValid;
49 
50 	int	    m_argc;
51 	int     m_argv_len;
52 
53 	#ifdef MPK_ON
54 		SEMAPHORE	m_qSemaphore;
55 	#else
56 		long        m_qSemaphore;
57 	#endif
58 
59 	char*   m_redirInName;
60 	char*   m_redirOutName;
61 	char*   m_redirErrName;
62 	char*   m_redirBothName;
63 	char*   nextarg;
64 	char*   sSkippedToken;
65 
66 	char**  m_argv;
67 	char**  new_argv;
68 
69 }COMMANDLINEPARSER, *PCOMMANDLINEPARSER;
70 
71 
72 
73 char* fnSkipWhite(char* cptr);
74 char* fnNwGetEnvironmentStr(char *name, char *defaultvalue);
75 char* fnSkipToken(char *s, char *r);
76 char* fnScanToken(char* x, char *r);
77 char* fnStashString(char *s, char *r, int length);
78 void fnAppendArgument(PCOMMANDLINEPARSER pclp, char * new_arg);
79 void fnDeleteArgument(PCOMMANDLINEPARSER pclp, int index);
80 void fnCommandLineParser(PCOMMANDLINEPARSER pclp, char * commandLine, BOOL preserveQuotes);
81 void fnSystemCommand (char** argv, int argc);
82 void fnInternalPerlLaunchHandler(char* cmdLine);
83 char* fnMy_MkTemp(char* templatestr);
84 
85 
86 /* NWDEFPERLROOT:
87  *  This symbol contains the name of the starting default directory to search
88  *  for scripts to run.
89  */
90 #define NWDEFPERLROOT "sys:\\perl\\scripts"
91 
92 /* NWDEFPERLTEMP:
93  *  This symbol contains the name of the default temp files directory.
94  */
95 #define NWDEFPERLTEMP "sys:\\perl\\temp"
96 
97 
98 #endif	// __NWUtil_H__
99 
100