From 780d6a8b05645ff93aaa7a83cf0c5dd29769a77e Mon Sep 17 00:00:00 2001 From: Antonio Linares Date: Wed, 5 May 1999 07:13:12 +0000 Subject: [PATCH] missing files on first upload --- harbour/source/tools/datesx.c | 16 +++ harbour/source/tools/io.c | 237 ++++++++++++++++++++++++++++++++ harbour/source/tools/stringsx.c | 101 ++++++++++++++ 3 files changed, 354 insertions(+) create mode 100644 harbour/source/tools/datesx.c create mode 100644 harbour/source/tools/io.c create mode 100644 harbour/source/tools/stringsx.c diff --git a/harbour/source/tools/datesx.c b/harbour/source/tools/datesx.c new file mode 100644 index 0000000000..023c66e826 --- /dev/null +++ b/harbour/source/tools/datesx.c @@ -0,0 +1,16 @@ +#include +#include + +HARBOUR DATETIME( void ) +{ + time_t current_time; + char * szResult = ( char * ) _xgrab( 26 ); + + time( ¤t_time ); + + szResult = strcpy( szResult, ctime( ¤t_time ) ); + + _retc( szResult ); + _xfree( szResult ); +} + diff --git a/harbour/source/tools/io.c b/harbour/source/tools/io.c new file mode 100644 index 0000000000..5c19b7672d --- /dev/null +++ b/harbour/source/tools/io.c @@ -0,0 +1,237 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define TRUE 1 +#define FALSE 0 + + +HARBOUR renfile() +{ +int ok; + PITEM arg1 = _param(1,IT_STRING); + PITEM arg2 = _param(2,IT_STRING); + if( arg1 && arg2) +{ +ok=rename(_parc(1),_parc(2)); +if(!ok) +_retl(TRUE); +else +_retl(FALSE); +} +} +/* + + +/* $DOC$ + * $FUNCNAME$ + * CD() + * $CATEGORY$ + * DOS + * $ONELINER$ + * + * $SYNTAX$ + * CD() + * $ARGUMENTS$ + * DIR TO BE CHANGED + * $RETURNS$ + * .T. IF SUCEFUL + * .F. IF NOT + * + * $DESCRIPTION$ + * CHANGE THE CURRENT DIRECTORY + * $EXAMPLES$ + * IF CD("OLA") + * RETURN(.T.) + * ELSE + * RETURN(.F.) + * ENDIF + * + * $SEEALSO$ + * + * $INCLUDE$ + * extend.h dos.h dir.h bios.h internal.h + * $END$ + */ + +/* + + + + + +/* $DOC$ + * $FUNCNAME$ + * MD() + * $CATEGORY$ + * DOS + * $ONELINER$ + * + * $SYNTAX$ + * MD() + * $ARGUMENTS$ + * DIRECTORY TO BE CREATED + * $RETURNS$ + * .T. IF SUCEFUL + * .F. IF NOT + * + * $DESCRIPTION$ + * CREATE A DIRECTORY + * $EXAMPLES$ + * IF MD("OLA") + * RETURN(.T.) + * ELSE + * RETURN(.F.) + * ENDIF + * + * $SEEALSO$ + * + * $INCLUDE$ + * extend.h dos.h dir.h bios.h internal.h + * $END$ + */ + +/* +/* $DOC$ + * $FUNCNAME$ + * RD() + * $CATEGORY$ + * DOS + * $ONELINER$ + * + * $SYNTAX$ + * RD() + * $ARGUMENTS$ + * DIR TO BE DELETED + * $RETURNS$ + * .T. IF SUCEFUL + * .F. IF NOT + * + * $DESCRIPTION$ + * REMOVE A DIRECTORY + * $EXAMPLES$ + * IF RD("OLA") + * RETURN(.T.) + * ELSE + * RETURN(.F.) + * ENDIF + * + * $SEEALSO$ + * + * $INCLUDE$ + * extend.h dos.h dir.h bios.h internal.h + * $END$ + */ +HARBOUR CD(void) + +{ + PITEM MEUDIR = _param(1,IT_STRING); + if(MEUDIR) +{ +_retni(chdir(_parc(1))); +} +} + +HARBOUR MD(void) +{ + + PITEM MEUDIR = _param(1,IT_STRING); + if(MEUDIR) +{ + +_retni(mkdir(_parc(1))); +} +} + +HARBOUR RD(void) +{ + PITEM MEUDIR = _param(1,IT_STRING); + if(MEUDIR) +{ + +_retni(chdir(_parc(1))); +} +} + +/* $DOC$ + * $FUNCNAME$ + * FILE() + * $CATEGORY$ + * DOS + * $ONELINER$ + * + * $SYNTAX$ + * RD() + * $ARGUMENTS$ + * FILE TO BE CHECKED + * $RETURNS$ + * .T. IF SUCEFUL + * .F. IF NOT + * + * $DESCRIPTION$ + * VERIFY IF A FILE EXISTS + * $EXAMPLES$ + * IF FILE("OLA.PRG") + * RETURN(.T.) + * ELSE + * RETURN(.F.) + * ENDIF + * + * $SEEALSO$ + * + * $INCLUDE$ + * extend.h dos.h dir.h bios.h internal.h + * $END$ + */ + +HARBOUR file(void) +{ + PITEM arg1 = _param(1,IT_STRING); +char *arquivos; +int achou; +struct ffblk arquivo; +if (arg1) { +arquivos=_parc(1); +achou=findfirst(arquivos,&arquivo,FA_ARCH); +if (achou) + { +_retl(TRUE); +} + else + { +_retl(FALSE); +} +} +} +HARBOUR DISKUSED(void) +{ +long bytsfree,bytsfull; +struct diskfree_t disk; +_dos_getdiskfree(0,&disk); +bytsfree = (long) disk.avail_clusters * (long) disk.sectors_per_cluster * (long ) disk.bytes_per_sector; +bytsfull = (long) disk.total_clusters * (long) disk.sectors_per_cluster * (long ) disk.bytes_per_sector; +_retnl(bytsfull-bytsfree); +} +HARBOUR DISKFREE(void) +{ +long bytsfree; +struct diskfree_t disk; +_dos_getdiskfree(0,&disk); +bytsfree = (long) disk.avail_clusters * (long) disk.sectors_per_cluster * (long ) disk.bytes_per_sector; + +_retnl(bytsfree); +} +HARBOUR DISKFULL(void) +{ +long bytsfull; +struct diskfree_t disk; +_dos_getdiskfree(0,&disk); + +bytsfull = (long) disk.total_clusters * (long) disk.sectors_per_cluster * (long ) disk.bytes_per_sector; +_retnl(bytsfull); +} diff --git a/harbour/source/tools/stringsx.c b/harbour/source/tools/stringsx.c new file mode 100644 index 0000000000..a66fd76f00 --- /dev/null +++ b/harbour/source/tools/stringsx.c @@ -0,0 +1,101 @@ +#include +#include + +/* TODO: search this file for TODO and find 'em! */ + +/* debug function to dump the ASCII values of an entire string */ +HARBOUR STRDUMP( void ) +{ + char *szText = _parc(1); + long i, lLength = _parclen(1); + for( i = 0; i < lLength; i++ ) + printf("%d ", szText[i]); + printf("\n"); +} + +char *StrToken(char *szText, long lText, long lIndex, char cDelimiter, long *lLen) +{ + long wStart, wEnd = 0, wCounter = 0; + + do + { + wStart = wEnd; + + if( cDelimiter != ' ' ) + { + if( szText[wStart] == cDelimiter ) + wStart++; + } + else + { + while( wStart < lText && szText[wStart] == cDelimiter ) + wStart++; + } + + if( wStart < lText && szText[wStart] != cDelimiter ) + { + wEnd = wStart + 1; + + while( wEnd < lText && szText[wEnd] != cDelimiter ) + wEnd++; + } + else + wEnd = wStart; + } while( wCounter++ < lIndex - 1 && wEnd < lText ); + + if( wCounter < lIndex ) + { + *lLen = 0; + return ""; + } + else + { + *lLen = wEnd - wStart; + return szText + wStart; + } +} + +/* returns the nth occurence of a substring within a token-delimited string */ +HARBOUR STRTOKEN( void ) +{ + char *szText; + long lIndex = _parnl(2); + char cDelimiter = *_parc(3); + long lLen; + + if( !cDelimiter ) + cDelimiter = ' '; + + szText = StrToken(_parc(1), _parclen(1), lIndex, cDelimiter, &lLen); + + _stornl(lLen, 4); + _retclen(szText, lLen); +} + +HARBOUR ROT13( void ) +{ + PITEM pText = _param(1, IT_STRING); + + if( pText ) + { + char *szText = pText->value.szText; + long i, lLen = pText->wLength; + char *szResult = _xgrab(lLen + 1); + + for( i = 0; i < lLen; i++ ) + { + char c = szText[i]; + if( (c >= 'A' && c <= 'M') || (c >= 'a' && c <= 'm') ) + c += 13; + else if( (c >= 'N' && c <= 'Z') || (c >= 'n' && c <= 'z') ) + c -= 13; + + szResult[i] = c; + } + _retclen(szResult, lLen); + _xfree(szResult); + } + else + _retc(""); +} +