[srvx-commits] CVS: services/src tools.c,1.123,1.124
                
                Brought to you by:
                
                    entrope
                    
                
            
            
        
        
        
    | 
      
      
      From: Entrope <en...@us...> - 2003-07-11 03:11:55
      
     | 
| Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv3584/src
Modified Files:
	tools.c 
Log Message:
make string_buffer_append_vprintf() slightly more efficient
Index: tools.c
===================================================================
RCS file: /cvsroot/srvx/services/src/tools.c,v
retrieving revision 1.123
retrieving revision 1.124
diff -C2 -r1.123 -r1.124
*** tools.c	7 Jul 2003 16:29:34 -0000	1.123
--- tools.c	11 Jul 2003 03:11:52 -0000	1.124
***************
*** 706,711 ****
          buf->list = realloc(buf->list, buf->size);
      }
!     if ((ret = vsnprintf(buf->list + buf->used, 0, fmt, working)) <= 0) {
!         /* pre-C99 behavior */
          va_end(working);
          VA_COPY(working, args);
--- 706,712 ----
          buf->list = realloc(buf->list, buf->size);
      }
!     ret = vsnprintf(buf->list + buf->used, buf->size - buf->used, fmt, working);
!     if (ret <= 0) {
!         /* pre-C99 behavior; double buffer size until it is big enough */
          va_end(working);
          VA_COPY(working, args);
***************
*** 716,721 ****
              VA_COPY(working, args);
          }
!         buf->used += ret + 1;
      } else {
          if (buf->size <= buf->used + ret) {
              buf->size = buf->used + ret + 1;
--- 717,726 ----
              VA_COPY(working, args);
          }
!         buf->used += ret;
!     } else if (buf->used + ret < buf->size) {
!         /* no need to increase allocation size */
!         buf->used += ret;
      } else {
+         /* now we know exactly how much space we need */
          if (buf->size <= buf->used + ret) {
              buf->size = buf->used + ret + 1;
***************
*** 724,728 ****
          va_end(working);
          VA_COPY(working, args);
!         buf->used += vsnprintf(buf->list + buf->used, buf->size, fmt, working) + 1;
      }
      va_end(working);
--- 729,733 ----
          va_end(working);
          VA_COPY(working, args);
!         buf->used += vsnprintf(buf->list + buf->used, buf->size, fmt, working);
      }
      va_end(working);
 |