af15e0698b
git-svn-id: svn://10.65.10.50/trunk@4679 c028cbd2-c16b-5b4b-a496-9718f37d4682
671 lines
19 KiB
C
Executable File
671 lines
19 KiB
C
Executable File
/*********************************************************************
|
|
d4port.c (c)Copyright Sequiter Software Inc., 1996.
|
|
All rights reserved.
|
|
|
|
This example test program tests low-level functions.
|
|
|
|
*********************************************************************/
|
|
|
|
#include "d4port.h"
|
|
|
|
int main()
|
|
{
|
|
long lenl ;
|
|
int lens ;
|
|
long bscheckl = 2020175445;
|
|
int bschecks = 2020175445;
|
|
unsigned char testBuf[5] ;
|
|
unsigned char testunix[17], testxinu[5], testnuxi[5] ;
|
|
char teststr[6] ;
|
|
|
|
|
|
int rc, myfile, i, status ;
|
|
int bigbits =0; /*boolean*/
|
|
int iserror = EXIT_SUCCESS ;
|
|
char ch ;
|
|
pid_t pid;
|
|
double powc, powc2,atofcheck;
|
|
const double value = 9.876 ;
|
|
size_t size_var = 1;
|
|
char strtest[15];
|
|
char *str;
|
|
int dec, sign;
|
|
#ifndef S4NO_FTIME
|
|
struct timeb tp ;
|
|
#else
|
|
struct timeval tp;
|
|
#endif
|
|
|
|
|
|
setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
|
|
/*S464BIT*************************************************/
|
|
if (sizeof(long) == 8)
|
|
{
|
|
bigbits = 1 ;
|
|
fprintf(stdout, " #define S464BIT\n");
|
|
}
|
|
else if (sizeof(long) == 4)
|
|
fprintf(stdout, "/* #define S464BIT */\n");
|
|
else
|
|
{
|
|
fprintf(stderr, "ERROR: Unknown bit system\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
|
|
/*S4BYTEORDER_3210****************************************/
|
|
/*S4BYTEORDER_2301****************************************/
|
|
|
|
if (bigbits)
|
|
{
|
|
lens = 0x01020408 ;
|
|
memcpy( testBuf, (void *)&lens, 4 ) ;
|
|
}
|
|
else
|
|
{
|
|
lenl = 0x01020408 ;
|
|
memcpy( testBuf, (void *)&lenl, 4 ) ;
|
|
}
|
|
|
|
memcpy( testunix, "\001\002\004\010", 4 ) ; /* S4BYTEORDER_3210 */
|
|
memcpy( testnuxi, "\002\001\010\004", 4 ) ; /* S4BYTEORDER_2301 */
|
|
memcpy( testxinu, "\010\004\002\001", 4 ) ; /* default */
|
|
|
|
if ( memcmp( testunix , testBuf, 4 ) )
|
|
if ( memcmp( testnuxi , testBuf, 4 ) )
|
|
if ( memcmp( testxinu , testBuf, 4 ) )
|
|
{
|
|
fprintf(stderr, "ERROR: Unknown byte ordering\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
else
|
|
{
|
|
fprintf(stdout, "/* #define S4BYTEORDER_2301 */\n");
|
|
fprintf(stdout, "/* #define S4BYTEORDER_3210 */\n");
|
|
}
|
|
else
|
|
{
|
|
fprintf(stdout, " #define S4BYTEORDER_2301 \n");
|
|
fprintf(stdout, "/* #define S4BYTEORDER_3210 */\n");
|
|
}
|
|
else
|
|
{
|
|
fprintf(stdout, "/* #define S4BYTEORDER_2301 */\n");
|
|
fprintf(stdout, " #define S4BYTEORDER_3210 \n");
|
|
}
|
|
|
|
/*S4BYTE_SWAP*********************************************/
|
|
/*OPENING FILE********************************************/
|
|
myfile = open("d4test", O_RDWR|O_CREAT|O_TRUNC, 0666);
|
|
if ( myfile < 0 )
|
|
{
|
|
fprintf(stderr, "ERROR: Function open() is failing with 'O_CREAT | O_TRUNC | O_RDWR'\n" );
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EACCES :
|
|
fprintf(stderr, "ERRNO == EACCES: Permission denied\n" ) ;
|
|
break ;
|
|
case EINVAL :
|
|
fprintf(stderr, "ERRNO == EINVAL: Invalid mode and permission setting\n" ) ;
|
|
break ;
|
|
case EEXIST :
|
|
fprintf(stderr, "ERRNO == EEXIST: O_CREAT and O_EXCL specified but file already exists\n" );
|
|
break ;
|
|
case EMFILE :
|
|
fprintf(stderr, "ERRNO == EMFILE: No more file handles available\n" ) ;
|
|
break ;
|
|
case ENOENT :
|
|
fprintf(stderr, "ERRNO == ENOENT: File not found or directory not present\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
rc = lseek( myfile, 10, SEEK_SET ) ;
|
|
if ( rc != 10 )
|
|
{
|
|
fprintf(stderr, "ERROR: Function lseek() is failing to seek past EOF(1)\n" );
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
case EINVAL :
|
|
fprintf(stderr, "ERRNO == EINVAL: Invalid mode and permission setting\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
if (bigbits)
|
|
rc = write(myfile, &bschecks, 4) ;
|
|
else
|
|
rc = write(myfile, &bscheckl, 4) ;
|
|
if ( rc != 4 )
|
|
{
|
|
fprintf(stderr, "ERROR: Function write() is failing to write past EOF\n" );
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
case ENOSPC :
|
|
fprintf(stderr, "ERRNO == ENOSPC: system out of disk space\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
rc = filelen(myfile);
|
|
if(rc != 14)
|
|
{
|
|
fprintf(stderr, "ERROR: File length is incorrect(1)\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
lseek(myfile, 10, SEEK_SET ) ;
|
|
for (i=0; i<4; i++)
|
|
{
|
|
rc=read(myfile,&teststr[i],size_var);
|
|
if (rc!=1)
|
|
{
|
|
fprintf(stderr, "ERROR: Problems reading from the file.\nUnable to continue\n");
|
|
iserror = EXIT_FAILURE ;
|
|
break;
|
|
}
|
|
}
|
|
if (strncmp(teststr, "Unix",4) )
|
|
if (strncmp(teststr, "xinU",4) )
|
|
{
|
|
fprintf(stderr, "ERROR: Writing error\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
else
|
|
fprintf(stdout," #define S4BYTE_SWAP\n");
|
|
else
|
|
fprintf(stdout,"/* #define S4BYTE_SWAP */\n");
|
|
|
|
rc = close( myfile ) ;
|
|
if ( rc < 0 )
|
|
{
|
|
fprintf(stderr, "ERROR: Closing file(1)\n");
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
myfile = open( "d4test", O_RDWR , 0666 ) ;
|
|
if ( myfile < 0 )
|
|
{
|
|
fprintf(stderr, "ERROR: function open() is failing with 'O_RDWR'\n");
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EACCES :
|
|
fprintf(stderr, "ERRNO == EACCES: Permission denied\n" ) ;
|
|
break ;
|
|
case EINVAL :
|
|
fprintf(stderr, "ERRNO == EINVAL: Invalid mode and permission setting\n" ) ;
|
|
break ;
|
|
case EEXIST :
|
|
fprintf(stderr, "ERRNO == EEXIST: O_CREAT and O_EXCL specified but file already exists\n" );
|
|
break ;
|
|
case EMFILE :
|
|
fprintf(stderr, "ERRNO == EMFILE: No more file handles available\n" ) ;
|
|
break ;
|
|
case ENOENT :
|
|
fprintf(stderr, "ERRNO == ENOENT: File not found or directory not present\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
/*Checking filelength(2)*************************************/
|
|
rc = filelen(myfile);
|
|
if(rc != 14)
|
|
{
|
|
fprintf(stderr, "ERROR: File length is incorrect(2)\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
#ifndef S4NO_CHSIZE
|
|
rc=chsize(myfile, 200);
|
|
#else
|
|
rc=ftruncate(myfile, 200);
|
|
#endif
|
|
if ( rc < 0 )
|
|
{
|
|
fprintf(stderr, "\nERROR: Changing file size \n" ) ;
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
|
|
rc = filelen(myfile);
|
|
if(rc != 200)
|
|
{
|
|
fprintf(stderr, "ERROR: File length is incorrect(3)\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
|
|
rc = lseek( myfile, T4LOCK_POS, 0 ) ;
|
|
if ( rc != T4LOCK_POS )
|
|
{
|
|
fprintf(stderr, "ERROR: Function lseek() is failing to seek past EOF(2)\n" );
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
case EINVAL :
|
|
fprintf(stderr, "ERRNO == EINVAL: Invalid mode and permission setting\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
#ifdef S4LOCKF
|
|
rc = lockf( myfile, F_TLOCK, 1 ) ;
|
|
#else
|
|
rc = locking( myfile, LK_NBLCK, 1 ) ;
|
|
#endif
|
|
if ( rc < 0 )
|
|
{
|
|
iserror = EXIT_FAILURE ;
|
|
fprintf(stderr, "ERROR: Function lock() is failing to lock past EOF\n" );
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
case EINVAL :
|
|
fprintf(stderr, "ERRNO == EINVAL: Invalid mode and permission setting\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
rc = lseek( myfile, T4LOCK_POS, 0 ) ;
|
|
if ( rc != T4LOCK_POS )
|
|
{
|
|
fprintf(stderr,"ERROR: Function lseek() is failing to seek past EOF(3)\n" );
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
case EINVAL :
|
|
fprintf(stderr, "ERRNO == EINVAL: Invalid mode and permission setting\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
#ifdef S4LOCKF
|
|
rc = lockf( myfile, F_ULOCK, 1 ) ;
|
|
#else
|
|
rc = locking( myfile, LK_UNLCK, 1 ) ;
|
|
#endif
|
|
if ( rc < 0 )
|
|
{
|
|
fprintf(stderr, "ERROR: Function unlock() is failing to unlock file\n" );
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
case EINVAL :
|
|
fprintf(stderr, "ERRNO == EINVAL: Invalid mode and permission setting\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
|
|
/*S4NO_NEGATIVE_LOCK**************************************/
|
|
rc = lseek(myfile, -10, SEEK_SET ); /*rc should = -10 */
|
|
#ifdef S4LOCKF
|
|
rc = lockf( myfile, F_LOCK, 5 ) ;
|
|
#else
|
|
rc = locking( myfile, LK_NBLCK, 5 ) ;
|
|
#endif
|
|
if (rc != 0 )
|
|
{
|
|
fprintf(stderr, "ERROR: Locking\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
if ( (pid=fork()) <0)
|
|
{
|
|
fprintf(stderr, "ERROR: Fork(1)\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
else if (pid == 0)
|
|
{
|
|
int lockfail = 0;
|
|
|
|
rc = lseek(myfile, -15, SEEK_SET ); /*rc should = -15 */
|
|
#ifdef S4LOCKF
|
|
rc = lockf( myfile, F_TLOCK, 3 ) ;
|
|
#else
|
|
rc = locking( myfile, LK_NBLCK, 3 ) ;
|
|
#endif
|
|
if (rc < 0 )
|
|
lockfail = 1;
|
|
rc = lseek(myfile, 0, SEEK_SET ); /*rc should = 0 */
|
|
#ifdef S4LOCKF
|
|
rc = lockf( myfile, F_TLOCK, 5 ) ;
|
|
#else
|
|
rc = locking( myfile, LK_NBLCK, 5 ) ;
|
|
#endif
|
|
if (rc != 0 )
|
|
lockfail = 1;
|
|
exit(lockfail) ;
|
|
}
|
|
while(wait(&status)!=pid)
|
|
;
|
|
if ((WIFEXITED(status)==0))
|
|
{
|
|
fprintf(stderr, "ERROR: Fork(2)\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
if (WEXITSTATUS(status))
|
|
fprintf(stdout," #define S4NO_NEGATIVE_LOCK \n");
|
|
else
|
|
fprintf(stdout,"/* #define S4NO_NEGATIVE_LOCK */\n");
|
|
|
|
|
|
rc = close( myfile ) ;
|
|
if ( rc < 0 )
|
|
{
|
|
fprintf(stderr, "ERROR: Closing file(2)\n");
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EBADF :
|
|
fprintf(stderr, "ERRNO == EBADF: file handle is invalid\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
/*S4DATA_ALIGN************************************************/
|
|
/* testunix[1]='U';*/
|
|
/*testunix[2]='n';*/
|
|
/*testunix[3]='i';*/
|
|
/*testunix[4]='x';*/
|
|
/*if (signal(SIGBUS, sig_bus) == SIG_ERR)*/
|
|
/*{*/
|
|
/*fprintf(stderr, "ERROR: Unable to catch bus errors\n");*/
|
|
/*iserror = EXIT_FAILURE ;*/
|
|
/*}*/
|
|
/*bscheckl = *((long *)(testunix+1));*/
|
|
/*if (!buserr)*/
|
|
/*fprintf(stdout, "/ #define S4DATA_ALIGN /\n");*/
|
|
fprintf(stdout, " #define S4DATA_ALIGN\n");
|
|
|
|
/*S4MEMCMP************************************************/
|
|
rc = memcmp( "\320", "\120", 1 ) ;
|
|
if (rc <= 0) /* memcmp assumes signed bytes -- not usable */
|
|
fprintf(stdout," #define S4MEMCMP\n");
|
|
else
|
|
fprintf(stdout,"/* #define S4MEMCMP */\n");
|
|
|
|
/*Checking for unsigned bytes*******************************/
|
|
ch = -5 ;
|
|
if ( ch != -5 )
|
|
{
|
|
fprintf(stderr, "ERROR: compiled using unsigned byte default\n" ) ;
|
|
fprintf(stderr, "See your compiler documentation for\n" ) ;
|
|
fprintf(stderr, "'signed byte compilation' information.\n" ) ;
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
|
|
|
|
/***********************************************************/
|
|
fprintf(stdout, "\n");
|
|
|
|
|
|
/*S4LOCKF****************************************************/
|
|
#ifndef S4LOCKF
|
|
fprintf(stdout, "/* #define S4LOCKF */\n");
|
|
#else
|
|
fprintf(stdout, " #define S4LOCKF\n");
|
|
#endif
|
|
|
|
/*S4NO_ATOF**************************************************/
|
|
#ifndef S4NO_ATOF
|
|
fprintf(stdout, "/* #define S4NO_ATOF */\n");
|
|
atofcheck = atof("-152.5e1gobbledigook");
|
|
if (atofcheck != -1525)
|
|
{
|
|
fprintf(stderr, "ERROR: atof() does not produce a correct result\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
#else
|
|
fprintf(stdout, " #define S4NO_ATOF\n");
|
|
#endif
|
|
|
|
/*S4NO_CHSIZE************************************************/
|
|
#ifndef S4NO_CHSIZE
|
|
fprintf(stdout, "/* #define S4NO_CHSIZE */\n");
|
|
#else
|
|
fprintf(stdout, " #define S4NO_CHSIZE\n");
|
|
#endif
|
|
|
|
/*S4NO_ECVT****************************************************/
|
|
#ifndef S4NO_ECVT
|
|
str=ecvt(value, 10, &dec, &sign);
|
|
if (strncmp(str,"98760000",8))
|
|
{
|
|
fprintf(stderr,"ERROR: ecvt() returned incorrect results\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
fprintf(stdout,"/* #define S4NO_ECVT */\n");
|
|
#else
|
|
fprintf(stdout," #define S4NO_ECVT\n");
|
|
#endif
|
|
|
|
/*S4NO_FCVT****************************************************/
|
|
#ifndef S4NO_FCVT
|
|
str= fcvt(value, 5, &dec, &sign);
|
|
if (strncmp(str, "987600",6))
|
|
{
|
|
fprintf(stderr, "ERROR: fcvt() returned incorrect results\n");
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
fprintf(stdout,"/* #define S4NO_FCVT */\n");
|
|
#else
|
|
fprintf(stdout," #define S4NO_FCVT\n");
|
|
#endif
|
|
|
|
/*S4NO_FILELENGTH********************************************/
|
|
#ifndef S4NO_FILELENGTH
|
|
fprintf(stdout, "/* #define S4NO_FILELENGTH */\n");
|
|
#else
|
|
fprintf(stdout, " #define S4NO_FILELENGTH\n");
|
|
#endif
|
|
|
|
/*S4NO_FTIME*************************************************/
|
|
#ifndef S4NO_FTIME
|
|
ftime(&tp);
|
|
fprintf(stdout, "/* #define S4NO_FTIME */\n");
|
|
#else
|
|
gettimeofday(&tp, NULL);
|
|
fprintf(stdout, " #define S4NO_FTIME\n");
|
|
#endif
|
|
|
|
/*S4NO_MEMMOVE***********************************************/
|
|
#ifndef S4NO_MEMMOVE
|
|
strcpy(strtest, "unixxxxxxx");
|
|
memmove(&strtest[2], &strtest[0],4);
|
|
if (strcmp(strtest, "ununixxxxx"))
|
|
{
|
|
fprintf(stdout," #define S4NO_MEMMOVE\n");
|
|
}
|
|
else
|
|
{
|
|
strcpy(strtest, "xxxxxxunix");
|
|
memmove(&strtest[4], &strtest[6],4);
|
|
if (strcmp(strtest, "xxxxunixix"))
|
|
{
|
|
fprintf(stdout," #define S4NO_MEMMOVE\n");
|
|
}
|
|
else
|
|
fprintf(stdout,"/* #define S4NO_MEMMOVE */\n");
|
|
}
|
|
#else
|
|
fprintf(stdout,"/* #define S4NO_MEMMOVE */\n");
|
|
#endif
|
|
|
|
/*S4NO_POW***************************************************/
|
|
#ifndef S4NO_POW
|
|
powc = pow(10.0, 2.0);
|
|
if (powc == 100.0)
|
|
fprintf(stdout,"/* #define S4NO_POW */\n");
|
|
else
|
|
{
|
|
powc2 = floor(powc + 0.5);
|
|
if (powc2 == 100.0)
|
|
fprintf(stdout,"/* #define S4NO_POW */ /* Not 100%% precise */\n");
|
|
else
|
|
fprintf(stdout," #define S4NO_POW\n");
|
|
}
|
|
#else
|
|
fprintf(stdout, "#define S4NO_POW\n");
|
|
#endif
|
|
|
|
/*S4NO_RENAME**************************************************/
|
|
#ifndef S4NO_RENAME
|
|
fprintf(stdout, "/* #define S4NO_RENAME */\n");
|
|
rc = rename("d4test", "d4erik");
|
|
#else
|
|
fprintf(stdout, " #define S4NO_RENAME\n");
|
|
rc = system("mv d4test d4erik");
|
|
#endif
|
|
if (rc<0)
|
|
{
|
|
fprintf(stderr, "ERROR: Unable to change filename\n");
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EACCES :
|
|
fprintf(stderr, "ERRNO == EACCES: Permission denied\n" ) ;
|
|
break ;
|
|
case ENOENT :
|
|
fprintf(stderr, "ERRNO == ENOENT: No such file or directory\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr, "ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
/*S4NO_REMOVE*****************************************************/
|
|
#ifndef S4NO_REMOVE
|
|
fprintf(stdout, "/* #define S4NO_REMOVE */\n");
|
|
rc =remove("d4erik");
|
|
#else
|
|
fprintf(stdout, " #define S4NO_REMOVE\n");
|
|
rc =unlink("d4erik");
|
|
#endif
|
|
if (rc<0)
|
|
{
|
|
fprintf(stdout,"\nERROR: Unable to remove file\n" ) ;
|
|
iserror = EXIT_FAILURE ;
|
|
switch ( (int) errno )
|
|
{
|
|
case EACCES :
|
|
fprintf(stderr,"ERRNO == EACCES: Permission denied\n" ) ;
|
|
break ;
|
|
default:
|
|
fprintf(stderr,"ERRNO VALUE NOT RECOGNIZED\n" ) ;
|
|
}
|
|
}
|
|
|
|
/*S4NO_NO_SIZE_T**********************************************/
|
|
#ifndef S4NO_SIZE_T
|
|
fprintf(stdout, "/* #define S4NO_SIZE_T */\n");
|
|
#else
|
|
fprintf(stdout, " #define S4NO_SIZE_T\n");
|
|
#endif
|
|
|
|
/*S4NO_STRLWR**************************************************/
|
|
#ifndef S4NO_STRLWR
|
|
strcpy(strtest, "UNIX ROCKS");
|
|
strlwr(strtest);
|
|
rc = strcmp(strtest, "unix rocks");
|
|
if (rc)
|
|
{
|
|
fprintf(stderr, "ERROR: The strlwr() function does not work properly: %s\n", strtest);
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
fprintf(stdout, "/* #define S4NO_STRLWR */\n") ;
|
|
#else
|
|
fprintf(stdout, " #define S4NO_STRLWR\n") ;
|
|
#endif
|
|
|
|
/*S4NO_STRUPR**************************************************/
|
|
#ifndef S4NO_STRUPR
|
|
strcpy(strtest, "unix rocks");
|
|
strupr(strtest);
|
|
rc = strcmp(strtest, "UNIX ROCKS");
|
|
if (rc)
|
|
{
|
|
fprintf(stderr, "ERROR: The strupr() function does not work properly: %s\n", strtest);
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
fprintf(stdout, "/* #define S4NO_STRUPR */\n") ;
|
|
#else
|
|
fprintf(stdout, " #define S4NO_STRUPR\n") ;
|
|
#endif
|
|
|
|
/*S4NO_STRNICMP*************************************************/
|
|
#ifndef S4NO_STRNICMP
|
|
strcpy(strtest, "UnIx RoCkS");
|
|
rc = strnicmp(strtest, "uNiX rOcXx",8);
|
|
if (rc)
|
|
{
|
|
fprintf(stderr, "ERROR: The strnicmp() function does not work properly: %s\n", strtest);
|
|
iserror = EXIT_FAILURE ;
|
|
}
|
|
fprintf(stdout, "/* #define S4NO_STRNICMP */\n") ;
|
|
#else
|
|
fprintf(stdout, " #define S4NO_STRNICMP\n") ;
|
|
#endif
|
|
exit(iserror);
|
|
}
|
|
|
|
/*static void sig_bus(int signo)*/
|
|
/*{*/
|
|
/*if(signo == SIGBUS )*/
|
|
/*{*/
|
|
/*buserr = 1;*/
|
|
/*fprintf(stdout," #define S4DATA_ALIGN\n");*/
|
|
/*}*/
|
|
/*else*/
|
|
/*fprintf(stderr, "received signal %d\n", signo);*/
|
|
/*}*/
|
|
|
|
static int filelen(int myfile)
|
|
{
|
|
#ifndef S4NO_FILELENGTH
|
|
return filelength(myfile);
|
|
#else
|
|
struct stat strStat ;
|
|
if (fstat( myfile, &strStat) )
|
|
fprintf(stderr, "ERROR: file length function\n");
|
|
return ( (long)strStat.st_size ) ;
|
|
#endif
|
|
}
|