version 1.8, 2001/08/21 14:12:46 |
version 1.11, 2002/08/03 03:35:40 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/ext.c,v 1.7 2001/08/10 13:48:38 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/ext.c,v 1.10 2002/07/28 02:48:16 takayama Exp $ */ |
#include <stdio.h> |
#include <stdio.h> |
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/stat.h> |
#include <sys/stat.h> |
|
|
#include "extern2.h" |
#include "extern2.h" |
#include <signal.h> |
#include <signal.h> |
#include "plugin.h" |
#include "plugin.h" |
|
#include <ctype.h> |
|
|
#define MYCP_SIZE 100 |
#define MYCP_SIZE 100 |
static int Mychildren[MYCP_SIZE]; |
static int Mychildren[MYCP_SIZE]; |
Line 35 static void mywait() { |
|
Line 36 static void mywait() { |
|
} |
} |
|
|
#define SIZE_OF_ENVSTACK 5 |
#define SIZE_OF_ENVSTACK 5 |
static jmp_buf EnvStack[SIZE_OF_ENVSTACK]; |
#if defined(__CYGWIN__) |
|
#define JMP_BUF sigjmp_buf |
|
#else |
|
#define JMP_BUF jmp_buf |
|
#endif |
|
static JMP_BUF EnvStack[SIZE_OF_ENVSTACK]; |
static int Envp = 0; |
static int Envp = 0; |
static void pushEnv(jmp_buf jb) { |
static void pushEnv(JMP_BUF jb) { |
if (Envp < SIZE_OF_ENVSTACK) { |
if (Envp < SIZE_OF_ENVSTACK) { |
*(EnvStack[Envp]) = *jb; |
*(EnvStack[Envp]) = *jb; |
Envp++; |
Envp++; |
Line 46 static void pushEnv(jmp_buf jb) { |
|
Line 52 static void pushEnv(jmp_buf jb) { |
|
exit(2); |
exit(2); |
} |
} |
} |
} |
static void popEnv(jmp_buf jbp) { |
static void popEnv(JMP_BUF jbp) { |
if (Envp <= 0) { |
if (Envp <= 0) { |
fprintf(stderr,"Underflow of EnvStack.\n"); |
fprintf(stderr,"Underflow of EnvStack.\n"); |
exit(3); |
exit(3); |
Line 86 struct object Kextension(struct object obj) |
|
Line 92 struct object Kextension(struct object obj) |
|
char *abc; |
char *abc; |
char *abc2; |
char *abc2; |
extern struct context *CurrentContextp; |
extern struct context *CurrentContextp; |
|
#if (__CYGWIN__) |
|
extern sigjmp_buf EnvOfStackMachine; |
|
#else |
extern jmp_buf EnvOfStackMachine; |
extern jmp_buf EnvOfStackMachine; |
|
#endif |
extern void ctrlC(); |
extern void ctrlC(); |
extern int SigIgn; |
extern int SigIgn; |
extern errno; |
extern errno; |
Line 152 struct object Kextension(struct object obj) |
|
Line 162 struct object Kextension(struct object obj) |
|
obj1 = getoa(obj,1); |
obj1 = getoa(obj,1); |
if (obj1.tag != Sdollar) errorKan1("%s\n","[(getenv) envstr] extension"); |
if (obj1.tag != Sdollar) errorKan1("%s\n","[(getenv) envstr] extension"); |
abc = getenv(KopString(obj1)); |
abc = getenv(KopString(obj1)); |
|
#if defined(__CYGWIN__) |
|
if (abc == NULL) { |
|
abc2 = (char *)sGC_malloc(sizeof(char)*(strlen(KopString(obj1))+2)); |
|
strcpy(abc2,KopString(obj1)); |
|
for (i=0; i<strlen(abc2); i++) { |
|
abc2[i] = toupper(abc2[i]); |
|
} |
|
abc = getenv(abc2); |
|
} |
|
#endif |
if (abc == NULL) { |
if (abc == NULL) { |
rob = NullObject; |
rob = NullObject; |
}else{ |
}else{ |