summaryrefslogtreecommitdiff
path: root/src/strngrtr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/strngrtr.c')
-rw-r--r--src/strngrtr.c121
1 files changed, 70 insertions, 51 deletions
diff --git a/src/strngrtr.c b/src/strngrtr.c
index 70784ca..69c82db 100644
--- a/src/strngrtr.c
+++ b/src/strngrtr.c
@@ -1,7 +1,7 @@
/*******************************************************/
/* "C" Language Integrated Production System */
/* */
- /* CLIPS Version 6.22 06/15/04 */
+ /* CLIPS Version 6.30 08/16/14 */
/* */
/* STRING I/O ROUTER MODULE */
/*******************************************************/
@@ -14,10 +14,21 @@
/* Gary D. Riley */
/* */
/* Contributing Programmer(s): */
-/* Brian L. Donnell */
+/* Brian L. Dantes */
/* */
/* Revision History: */
/* */
+/* 6.30: Used genstrcpy instead of strcpy. */
+/* */
+/* Removed conditional code for unsupported */
+/* compilers/operating systems (IBM_MCW, */
+/* MAC_MCW, and IBM_TBC). */
+/* */
+/* Changed integer type/precision. */
+/* */
+/* Added const qualifiers to remove C++ */
+/* deprecation warnings. */
+/* */
/*************************************************************/
#define _STRNGRTR_SOURCE_
@@ -33,6 +44,7 @@
#include "envrnmnt.h"
#include "memalloc.h"
#include "router.h"
+#include "sysdep.h"
#include "strngrtr.h"
@@ -43,12 +55,12 @@
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
/***************************************/
- static int FindString(void *,char *);
- static int PrintString(void *,char *,char *);
- static int GetcString(void *,char *);
- static int UngetcString(void *,int,char *);
- static struct stringRouter *FindStringRouter(void *,char *);
- static int CreateReadStringSource(void *,char *,char *,int,unsigned);
+ static int FindString(void *,const char *);
+ static int PrintString(void *,const char *,const char *);
+ static int GetcString(void *,const char *);
+ static int UngetcString(void *,int,const char *);
+ static struct stringRouter *FindStringRouter(void *,const char *);
+ static int CreateReadStringSource(void *,const char *,const char *,size_t,size_t);
static void DeallocateStringRouterData(void *);
/**********************************************************/
@@ -61,7 +73,7 @@ globle void InitializeStringRouter(
EnvAddRouter(theEnv,"string",0,FindString,PrintString,GetcString,UngetcString,NULL);
}
-
+
/*******************************************/
/* DeallocateStringRouterData: Deallocates */
/* environment data for string routers. */
@@ -70,12 +82,12 @@ static void DeallocateStringRouterData(
void *theEnv)
{
struct stringRouter *tmpPtr, *nextPtr;
-
+
tmpPtr = StringRouterData(theEnv)->ListOfStringRouters;
while (tmpPtr != NULL)
{
nextPtr = tmpPtr->next;
- rm(theEnv,tmpPtr->name,strlen(tmpPtr->name) + 1);
+ rm(theEnv,(void *) tmpPtr->name,strlen(tmpPtr->name) + 1);
rtn_struct(theEnv,stringRouter,tmpPtr);
tmpPtr = nextPtr;
}
@@ -86,7 +98,7 @@ static void DeallocateStringRouterData(
/*************************************************************/
static int FindString(
void *theEnv,
- char *fileid)
+ const char *fileid)
{
struct stringRouter *head;
@@ -106,8 +118,8 @@ static int FindString(
/**************************************************/
static int PrintString(
void *theEnv,
- char *logicalName,
- char *str)
+ const char *logicalName,
+ const char *str)
{
struct stringRouter *head;
@@ -119,12 +131,16 @@ static int PrintString(
}
if (head->readWriteType != WRITE_STRING) return(1);
- if (head->currentPosition >= (int) (head->maximumPosition - 1)) return(1);
- strncpy(&head->str[head->currentPosition],
- str,(STD_SIZE) (head->maximumPosition - head->currentPosition) - 1);
+ if (head->maximumPosition == 0) return(1);
+
+ if ((head->currentPosition + 1) >= head->maximumPosition) return(1);
+
+ genstrncpy(&head->writeString[head->currentPosition],
+ str,(STD_SIZE) (head->maximumPosition - head->currentPosition) - 1);
+
+ head->currentPosition += strlen(str);
- head->currentPosition += (int) strlen(str);
return(1);
}
@@ -133,7 +149,7 @@ static int PrintString(
/************************************************/
static int GetcString(
void *theEnv,
- char *logicalName)
+ const char *logicalName)
{
struct stringRouter *head;
int rc;
@@ -146,13 +162,13 @@ static int GetcString(
}
if (head->readWriteType != READ_STRING) return(EOF);
- if (head->currentPosition >= (int) head->maximumPosition)
+ if (head->currentPosition >= head->maximumPosition)
{
head->currentPosition++;
return(EOF);
}
- rc = (unsigned char) head->str[head->currentPosition];
+ rc = (unsigned char) head->readString[head->currentPosition];
head->currentPosition++;
return(rc);
@@ -161,16 +177,13 @@ static int GetcString(
/****************************************************/
/* UngetcString: Ungetc routine for string routers. */
/****************************************************/
-#if IBM_TBC
-#pragma argsused
-#endif
static int UngetcString(
void *theEnv,
int ch,
- char *logicalName)
+ const char *logicalName)
{
struct stringRouter *head;
-#if MAC_MCW || IBM_MCW || MAC_XCD
+#if MAC_XCD
#pragma unused(ch)
#endif
@@ -194,11 +207,11 @@ static int UngetcString(
/************************************************/
globle int OpenStringSource(
void *theEnv,
- char *name,
- char *str,
- int currentPosition)
+ const char *name,
+ const char *str,
+ size_t currentPosition)
{
- unsigned maximumPosition;
+ size_t maximumPosition;
if (str == NULL)
{
@@ -217,10 +230,10 @@ globle int OpenStringSource(
/******************************************************/
globle int OpenTextSource(
void *theEnv,
- char *name,
- char *str,
- int currentPosition,
- unsigned maximumPosition)
+ const char *name,
+ const char *str,
+ size_t currentPosition,
+ size_t maximumPosition)
{
if (str == NULL)
{
@@ -236,19 +249,22 @@ globle int OpenTextSource(
/******************************************************************/
static int CreateReadStringSource(
void *theEnv,
- char *name,
- char *str,
- int currentPosition,
- unsigned maximumPosition)
+ const char *name,
+ const char *str,
+ size_t currentPosition,
+ size_t maximumPosition)
{
struct stringRouter *newStringRouter;
+ char *theName;
if (FindStringRouter(theEnv,name) != NULL) return(0);
newStringRouter = get_struct(theEnv,stringRouter);
- newStringRouter->name = (char *) gm1(theEnv,(int) strlen(name) + 1);
- strcpy(newStringRouter->name,name);
- newStringRouter->str = str;
+ theName = (char *) gm1(theEnv,strlen(name) + 1);
+ genstrcpy(theName,name);
+ newStringRouter->name = theName;
+ newStringRouter->writeString = NULL;
+ newStringRouter->readString = str;
newStringRouter->currentPosition = currentPosition;
newStringRouter->readWriteType = READ_STRING;
newStringRouter->maximumPosition = maximumPosition;
@@ -263,7 +279,7 @@ static int CreateReadStringSource(
/**********************************************/
globle int CloseStringSource(
void *theEnv,
- char *name)
+ const char *name)
{
struct stringRouter *head, *last;
@@ -276,14 +292,14 @@ globle int CloseStringSource(
if (last == NULL)
{
StringRouterData(theEnv)->ListOfStringRouters = head->next;
- rm(theEnv,head->name,strlen(head->name) + 1);
+ rm(theEnv,(void *) head->name,strlen(head->name) + 1);
rtn_struct(theEnv,stringRouter,head);
return(1);
}
else
{
last->next = head->next;
- rm(theEnv,head->name,strlen(head->name) + 1);
+ rm(theEnv,(void *) head->name,strlen(head->name) + 1);
rtn_struct(theEnv,stringRouter,head);
return(1);
}
@@ -300,18 +316,21 @@ globle int CloseStringSource(
/******************************************************************/
globle int OpenStringDestination(
void *theEnv,
- char *name,
+ const char *name,
char *str,
- unsigned maximumPosition)
+ size_t maximumPosition)
{
struct stringRouter *newStringRouter;
+ char *theName;
if (FindStringRouter(theEnv,name) != NULL) return(0);
newStringRouter = get_struct(theEnv,stringRouter);
- newStringRouter->name = (char *) gm1(theEnv,(int) strlen(name) + 1);
- strcpy(newStringRouter->name,name);
- newStringRouter->str = str;
+ theName = (char *) gm1(theEnv,(int) strlen(name) + 1);
+ genstrcpy(theName,name);
+ newStringRouter->name = theName;
+ newStringRouter->readString = NULL;
+ newStringRouter->writeString = str;
newStringRouter->currentPosition = 0;
newStringRouter->readWriteType = WRITE_STRING;
newStringRouter->maximumPosition = maximumPosition;
@@ -326,7 +345,7 @@ globle int OpenStringDestination(
/***************************************************/
globle int CloseStringDestination(
void *theEnv,
- char *name)
+ const char *name)
{
return(CloseStringSource(theEnv,name));
}
@@ -336,7 +355,7 @@ globle int CloseStringDestination(
/*******************************************************************/
static struct stringRouter *FindStringRouter(
void *theEnv,
- char *name)
+ const char *name)
{
struct stringRouter *head;