view release on metacpan or search on metacpan
acelib/arraysub.c view on Meta::CPAN
arrayMax(reportArray) : 0 ;
}
/**************/
void arrayReport (int j)
{ int i ;
Array a ;
if (reportArray == (Array)1)
{ fprintf(stderr,
"\n\n %d active arrays, %d created, %d kb allocated\n\n ",
totalNumberActive, totalNumberCreated , totalAllocatedMemory/1024) ;
return ;
}
fprintf(stderr,"\n\n") ;
i = arrayMax (reportArray) ;
while (i-- && i > j)
{ a = arr (reportArray, i, Array) ;
if (arrayExists(a))
fprintf (stderr, "Array %d size=%d max=%d\n", i, a->size, a->max) ;
}
}
/**************/
void arrayStatus (int *nmadep, int *nusedp, int *memAllocp, int *memUsedp)
{
int i ;
Array a, *ap ;
acelib/arraysub.c view on Meta::CPAN
void assDump (Associator a)
{ int i ;
void **in, **out ;
char *cp0 = 0 ;
if (!assExists(a)) return ;
i = 1 << a->m ;
in = a->in - 1 ; out = a->out - 1 ;
/* keep stderr here since it is for debugging */
fprintf (stderr,"Associator %lx : %d pairs\n",(unsigned long)a,a->n) ;
while (in++, out++, i--)
if (*in && *in != moins_un) /* not empty or deleted */
fprintf (stderr,"%lx - %lx\n",
(long)((char*)(*in) - cp0),(long)( (char *)(*out) - cp0)) ;
}
/************************ end of file ********************************/
/**********************************************************************/
acelib/filsubs.c view on Meta::CPAN
lao:
if (!messPrompt("File name please", stackText(s,0), "w"))
{ stackDestroy(s) ;
return 0 ;
}
i = stackMark(s) ;
pushText(s, freepath()) ; /* freepath needed by WIN32 */
if (spec[0] == 'w' &&
(fil = fopen (stackText(s,i), "r")))
{ if ( fil != stdin && fil != stdout && fil != stderr)
fclose (fil) ;
fil = 0 ;
if (messQuery (messprintf ("Overwrite %s?",
stackText(s,i))))
{
if ((fil = fopen (stackText(s,i), spec)))
goto bravo ;
else
messout ("Sorry, can't open file %s for writing",
stackText (s,i)) ;
acelib/filsubs.c view on Meta::CPAN
/*********************************************/
static Associator mailFile = 0, mailAddress = 0 ;
UTIL_FUNC_DEF void filclose (FILE *fil)
{
char *address ;
char *filename ;
if (!fil || fil == stdin || fil == stdout || fil == stderr)
return ;
fclose (fil) ;
if (mailFile && assFind (mailFile, fil, &filename))
{ if (assFind (mailAddress, fil, &address))
callScript ("mail", messprintf ("%s %s", address, filename)) ;
else
messerror ("Have lost the address for mailfile %s", filename) ;
assRemove (mailFile, fil) ;
assRemove (mailAddress, fil) ;
unlink (filename) ;
acelib/messubs.c view on Meta::CPAN
if (errorJmpBuf)
longjmp (*errorJmpBuf, 1) ;
/* Log the message. */
messdump(mesg_buf) ;
/* Now report the error to the user. */
if (errorRoutine)
(*errorRoutine)(mesg_buf) ;
else
fprintf (stderr, "%s\n", mesg_buf) ;
invokeDebugger () ;
}
/*******************************/
/* Use this function for errors that while being unrecoverable are not a */
/* problem with the acedb code, e.g. if the user starts xace without */
acelib/messubs.c view on Meta::CPAN
char *prefix = EXIT_PREFIX ;
char *mesg_buf = NULL ;
va_list args ;
/* Format the message string. */
ACEFORMATSTRING(args, format, mesg_buf, prefix, NULL, 0) ;
if (exitRoutine)
(*exitRoutine)(mesg_buf) ;
else
fprintf (stderr, "%s\n", mesg_buf) ;
#if defined(MACINTOSH)
crashOut(mesg_buf) ;
#else
messdump(mesg_buf) ;
exit(EXIT_FAILURE) ;
#endif
return ; /* Should never get here. */
acelib/messubs.c view on Meta::CPAN
enum {MAXERRORS = 1} ;
static int internalErrors = 0 ;
static char prefix[1024] ;
int rc ;
char *mesg_buf = NULL ;
va_list args ;
/* Check for recursive calls and abort if necessary. */
if (internalErrors > MAXERRORS)
{
fprintf (stderr, "%s : fatal internal error, abort",
messageG.progname);
abort() ;
}
else internalErrors++ ;
/* Construct the message prefix, adding the program name if possible. */
if (messGetErrorProgram() == NULL)
rc = sprintf(prefix, CRASH_PREFIX_FORMAT, messGetErrorFile(), messGetErrorLine()) ;
else
rc = sprintf(prefix, FULL_CRASH_PREFIX_FORMAT,
acelib/messubs.c view on Meta::CPAN
#if defined(MACINTOSH)
crashOut(mesg_buf) ;
#else
messdump(mesg_buf) ;
if (crashRoutine)
(*crashRoutine)(mesg_buf) ;
else
fprintf(stderr, "%s\n", mesg_buf) ;
invokeDebugger() ;
exit(EXIT_FAILURE) ;
#endif
return ; /* Should never get here. */
}
acelib/messubs.c view on Meta::CPAN
char *buffer, unsigned int buflen)
{
char *buf_ptr ;
unsigned int buf_len ;
int prefix_len ;
/* Check arguments. */
if (format == NULL)
{
fprintf(stderr, "uMessFormat() : "
"invalid call, no format string.\n") ;
invokeDebugger();
exit (EXIT_FAILURE);
}
if (prefix == NULL)
prefix_len = 0 ;
else
{
prefix_len = strlen(prefix) ;
if ((prefix_len + 1) > PREFIXSIZE)
{
fprintf (stderr, "uMessFormat() : "
"prefix string is too long.\n") ;
invokeDebugger();
exit (EXIT_FAILURE);
}
}
/* If they supply their own buffer to receive the formatted
message then use this, otherwise use the global messbuf buffer. */
if (buffer != NULL)
{
buf_ptr = buffer ;
buf_len = buflen ;
if (buf_len == 0)
{
fprintf (stderr, "uMessFormat() : "
"zero length buffer supplied for message format.\n") ;
invokeDebugger();
exit (EXIT_FAILURE);
}
}
else
{
buf_ptr = &messbuf[0] ;
buf_len = BUFSIZE ;
}
/* Add the prefix if there is one. */
if (prefix != NULL)
{
if (strcpy (buf_ptr, prefix) == NULL)
{
fprintf (stderr, "uMessFormat() : strcpy failed\n") ;
invokeDebugger();
exit (EXIT_FAILURE);
}
}
/* CHECK PERFORMANCE ISSUES....how is database dumped/logged. */
/* Fred has suggested that we could do a vprintf to /dev/null and see how */
/* many bytes that is then we could get away from a fixed internal buffer */
acelib/messubs.c view on Meta::CPAN
#ifdef SUN
{
char *return_str;
/* NOTE, that SUNs vsprintf returns a char* */
return_str = vsprintf((buf_ptr + prefix_len), format, args) + prefix_len + 1 ;
/* Check the result. */
if (!return_str)
{
fprintf(stderr, "uMessFormat() : "
"vsprintf failed: %s\n", messSysErrorText()) ;
invokeDebugger();
exit (EXIT_FAILURE);
}
else if (strlen(return_str) > buf_len)
{
fprintf (stderr, "uMessFormat() : "
"messubs internal buffer size (%d) exceeded, "
"a total of %ld bytes were written\n",
buf_len, strlen(return_str)) ;
invokeDebugger();
exit (EXIT_FAILURE);
}
}
#else /* !SUN */
{
/* all other System's vsprintf returns an integer, of how many bytes have been written */
int num_bytes = vsprintf((buf_ptr + prefix_len), format, args) + prefix_len + 1 ;
/* Check the result. */
if (num_bytes < 0)
{
fprintf(stderr, "uMessFormat() : "
"vsprintf failed: %s\n", messSysErrorText()) ;
invokeDebugger();
exit (EXIT_FAILURE);
}
else if (num_bytes > buf_len)
{
fprintf (stderr, "uMessFormat() : "
"messubs internal buffer size (%d) exceeded, "
"a total of %d bytes were written\n",
buf_len, num_bytes) ;
invokeDebugger();
exit (EXIT_FAILURE);
}
}
#endif /* !SUN */
return(buf_ptr) ;
acelib/timesubs.c view on Meta::CPAN
{
unsigned int secs;
unsigned int mins;
unsigned int hours;
unsigned int day;
unsigned int month;
unsigned int year;
if (!t)
{
/* fprintf (stderr, "timeStruct() warning: received null t\n"); */
tm->tm_year = 0;
tm->tm_mon = 0;
tm->tm_mday = 0;
tm->tm_hour = 0;
tm->tm_min = 0;
tm->tm_sec = 0;
tm->tm_wday = 0;
tm->tm_yday = 0;
tm->tm_isdst = -1;
return;
acelib/timesubs.c view on Meta::CPAN
char *timeShowJava (mytime_t t)
{
static char ace_time[25] ;
struct tm ts;
BOOL wantMonth, wantDay, wantHours, wantMins, wantSecs;
if (!t)
{
/* fprintf(stderr, "timeShowJava() warning: received NULL value\n"); */
return "" ;
}
timeStruct(&ts, t, &wantMonth, &wantDay, &wantHours, &wantMins, &wantSecs);
if (!wantMonth)
strftime (ace_time, 25, "01 JAN %Y 00:00:00", &ts) ;
else if (!wantDay)
strftime (ace_time, 25, "01 %b %Y 00:00:00", &ts) ;
else if (!wantHours)
strftime (ace_time, 25, "%d %b %Y 00:00:00", &ts) ;
acelib/timesubs.c view on Meta::CPAN
/**********************************************/
char *timeShow (mytime_t t)
{
static char ace_time[25] ;
struct tm ts;
BOOL wantMonth, wantDay, wantHours, wantMins, wantSecs;
if (!t)
{
/* fprintf(stderr, "timeShow() warning: received NULL value\n"); */
return "" ;
}
timeStruct(&ts, t, &wantMonth, &wantDay, &wantHours, &wantMins, &wantSecs);
if (!wantMonth)
strftime (ace_time, 25, "%Y", &ts) ;
else if (!wantDay)
strftime (ace_time, 25, "%Y-%m", &ts) ;
else if (!wantHours)
strftime (ace_time, 25, "%Y-%m-%d", &ts) ;
acelib/wh/array.h view on Meta::CPAN
#define arr(ar,i,type) ((*(type*)((ar)->base + (i)*(ar)->size)))
#define arrp(ar,i,type) (((type*)((ar)->base + (i)*(ar)->size)))
#define arrayp(ar,i,type) ((type*)uArray(ar,i))
#define array(ar,i,type) (*(type*)uArray(ar,i))
#endif /* ARRAY_CHECK */
/* only use arr() when there is no danger of needing expansion */
Array arrayTruncatedCopy (Array a, int x1, int x2) ;
void arrayStatus (int *nmadep,int* nusedp, int *memAllocp, int *memUsedp) ;
int arrayReportMark (void) ; /* returns current array number */
void arrayReport (int j) ; /* write stderr about all arrays since j */
#define arrayMax(ar) ((ar)->max)
#define arrayForceFeed(ar,j) (uArray(ar,j), (ar)->max = (j))
#define arrayExists(ar) ((ar) && (ar)->magic == ARRAY_MAGIC ? (ar)->id : 0 )
/* JTM's package to hold sorted arrays of ANY TYPE */
BOOL arrayInsert(Array a, void * s, int (*order)(void*, void*));
BOOL arrayRemove(Array a, void * s, int (*order)(void*, void*));
void arraySort(Array a, int (*order)(void*, void*)) ;
void arraySortPos (Array a, int pos, int (*order)(void*, void*));
void arrayCompress(Array a) ;
BOOL arrayFind(Array a, void *s, int *ip, int (*order)(void*, void*));