Db-GTM
view release on metacpan or search on metacpan
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#include "gtmxc_types.h" // For GTM call-in function prototypes
#include "string.h" // strlen(), memcpy(), strncmp()
#include "GTM.h" // my prototypes
#include "stdlib.h" // setenv
static void err_gtm(const GtmEnv *gt) {
char *msgbuf = gt ? gt->errmsg : (char *)calloc(1024,sizeof(gtm_char_t));
gtm_zstatus(msgbuf,1024); if(!gt || (gt && !(gt->flags & NO_WARN))) {
warn("GTM ERROR: (%d) %s\n", gt->last_err, msgbuf);
}
if(!gt) free(msgbuf); return;
}
// Returns 1 if you should free the GVN after you're done with it
}
if(!err) {
if(!_GTMinvoc) { // Save terminal settings to restore during END()
#ifdef _GT_NEED_TERMFIX
_GTMterm = (struct termios *)calloc(1,sizeof(struct termios));
tcgetattr(STDIN_FILENO, _GTMterm);
#endif
#ifdef _GT_NEED_SIGFIX
sigint = signal(SIGINT, SIG_DFL); // Save SIGINT handler
#endif
setenv("GTMCI",_GT_GTMCI_LOC,0);
setenv("gtmroutines",_GT_GTMRTN_LOC,0);
setenv("gtmgbldir",_GT_GTMGBL_LOC,0);
setup->last_err = gtm_init();
#ifdef _GT_NEED_SIGFIX
signal(SIGINT, sigint); // Restore SIGINT handler
#endif
} else setup->last_err = 0;
if(setup->last_err) {
err_gtm(setup); gtenv_clear(setup); XSRETURN_UNDEF;
} else {
_GTMinvoc++; setup->gtmEnvId = _GTMinvoc; RETVAL = setup;
( run in 0.468 second using v1.01-cache-2.11-cpan-3989ada0592 )