Db-GTM

 view release on metacpan or  search on metacpan

GTM.xs  view on Meta::CPAN

#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

GTM.xs  view on Meta::CPAN

          } 
          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 )