htpl
view release on metacpan or search on metacpan
* Convert time to ASCII *
********************************************************/
STR convtime(t)
time_t t; {
static char stat[1024];
pchar ch, dst;
struct tm *timep;
timep = localtime(&t);
ch = asctime(timep);
dst = stat;
while (*ch && *ch != '\n') *dst++ = *ch++;
*dst = '\0';
return stat;
}
/*************************************
* Stack implementation *
*************************************/
/********************
* Push *
********************/
void ppush(stack, elem)
LINK_EL *stack;
void *elem; {
LINK_EL curr;
curr = malloc(sizeof(struct link_el));
curr->data = elem;
curr->next = *stack;
*stack = curr;
}
/*************
* Pop *
*************/
void *ppop(stack)
LINK_EL *stack; {
void *elem, *old;
if (!*stack) return NULL;
free((*stack)->data);
old = *stack;
*stack = (*stack)->next;
free(old);
if (*stack) elem = (*stack)->data; else elem = NULL;
return elem;
}
/*************************************
* Simple setenv function *
*************************************/
#ifdef HAVE_SETENV
void SETENV(key, val)
STR key;
STR val; {
setenv(key, val, 1);
}
#else
#ifndef HAVE_PUTENV
#error You must have either putenv or setenv
#endif
void SETENV(key, val)
STR key;
STR val; {
TOKEN s;
sprintf(s, "%s=%s", key, val);
putenv(s);
}
#endif
void getready() {
#ifdef _WIN32
TOKEN newlib;
STR lib = GETENV("PERL5LIB");
if (!lib) lib = "";
if (strstr(lib, bindir)) return;
sprintf(newlib, "%s\\HTPL-modules\\lib;%s", bindir, lib);
SETENV("PERL5LIB", newlib);
#endif
}
/*******************************************************
* Spawn a Perl process *
*******************************************************/
int execperl(argv, output, postdata, error, redir)
int redir;
char **argv;
STR output, postdata, error; {
int code;
int chld;
int nerr, nout, nin;
FILENAME cmd;
if (!redir) {
if (!(chld=fork())) {
getready();
execv(PERL_BIN, argv);
}
waitpid(chld, &code, 0);
return code;
}
/* Ok, we need to capture STDOUT and STDERR, and to feed STDIN */
nout=creat(output, 0777);
nin=open(postdata, O_RDONLY);
nerr=creat(error, 0777);
if (!(chld=fork())) {
dup(0);
close(0);
dup(nin);
( run in 1.518 second using v1.01-cache-2.11-cpan-39bf76dae61 )