/home/dko/projects/mobilec/tags/MobileC-v1.10.2/MobileC-v1.10.2/src/dynstring.c

Go to the documentation of this file.
00001 /* SVN FILE INFO
00002  * $Revision: 207 $ : Last Committed Revision
00003  * $Date: 2008-07-11 17:55:19 -0700 (Fri, 11 Jul 2008) $ : Last Committed Date */
00004 #include <stdio.h>
00005 #include <stdlib.h>
00006 #include <string.h>
00007 #include "include/dynstring.h"
00008 dynstring_t* dynstring_New(void)
00009 {
00010   dynstring_t* message;
00011   message = (dynstring_t*)malloc(sizeof(dynstring_t));
00012   message->len = 0;
00013   message->size = COMPOSE_BLOCKSIZE;
00014   message->message = (char*)malloc(sizeof(char) * message->size);
00015   if (message->message == NULL) {
00016     fprintf(stderr, "Memory error. %s:%d\n", __FILE__, __LINE__);
00017     exit(0);
00018   }
00019   memset(message->message, 0, message->size);
00020   
00021   return message;
00022 }
00023 
00024 int dynstring_Append(dynstring_t* msg, char* str)
00025 {
00026   char* tmp;
00027   /* Check to see if we need to reallocate the message buffer */
00028   while ( (strlen(str)+4) > (msg->size - msg->len) ) {
00029     /* Increase the size of the buffer by COMPOSE_BLOCKSIZE */
00030     tmp = (char*)malloc(
00031         sizeof(char) * 
00032         (msg->size + COMPOSE_BLOCKSIZE)
00033         );
00034     if (tmp == NULL) {
00035       fprintf(stderr, "Memory Error. %s:%d\n", __FILE__, __LINE__);
00036       exit(0);
00037     }
00038     msg->size = msg->size + COMPOSE_BLOCKSIZE;
00039     strcpy(tmp, msg->message);
00040     free(msg->message);
00041     msg->message = tmp;
00042   }
00043   strcat(msg->message, str);
00044   msg->len += strlen(str);
00045 
00046   return 0;
00047 }
00048 
00049 int dynstring_Destroy(dynstring_t* dynstring)
00050 {
00051   free(dynstring->message);
00052   free(dynstring);
00053   return 0;
00054 }

Generated on Fri Jul 11 17:59:44 2008 for Mobile-C by  doxygen 1.5.4