Develop and Download Open Source Software

Browse CVS Repository

Contents of /enbanfukusyaya/EnbanKensa/common/ebstring.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download) (as text)
Sun Mar 12 12:52:14 2006 UTC (18 years, 1 month ago) by bananajinn
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/x-csrc
*** empty log message ***

1 /* ‰~”ŐŒŸ¸ - EnbanKensa
2 * Copyright (C) 2005-2006 Kagetani Hideto
3 */
4
5 #include <stdio.h>
6 #include <string.h>
7 #include <stdlib.h>
8 #include <stdarg.h>
9 #include "ebstring.h"
10
11 char *EbStringNew(const char *string)
12 {
13 return strdup(string);
14 }
15
16 char *EbStringNewWithFormat(const char *format, ...)
17 {
18 va_list args;
19 int bufsize=80;
20 char *ret_string=NULL, *new_ptr;
21 int ret;
22
23 while(1){
24 new_ptr = realloc(ret_string, bufsize);
25 if(new_ptr == NULL){
26 if(ret_string != NULL){
27 free(ret_string);
28 }
29 return NULL;
30 }
31 ret_string = new_ptr;
32 va_start(args, format);
33 #if defined(WIN32)
34 ret = _vsnprintf(ret_string, bufsize, format, args);
35 #else
36 ret = vsnprintf(ret_string, bufsize, format, args);
37 #endif
38 va_end(args);
39 if((ret > -1) && (ret < bufsize)){
40 break;
41 }
42 if(ret > -1){
43 bufsize = ret+1;
44 }
45 else{
46 bufsize *= 2;
47 }
48 }
49 return ret_string;
50 }
51
52 char *EbStringAppend(char *ebstring, const char *append_string)
53 {
54 char *ret;
55 int len;
56
57 if(ebstring == NULL){
58 return EbStringNew(append_string);
59 }
60 len = strlen(ebstring);
61 ret = (char *)realloc(ebstring, len+strlen(append_string)+1);
62 if(ret == NULL){
63 return ebstring;
64 }
65
66 strcpy(ret+len, append_string);
67 return ret;
68 }
69
70 char *EbStringAppendWithFormat(char *ebstring, const char *format, ...)
71 {
72 va_list args;
73 int offset=0;
74 int bufsize=80;
75 char *ret_string=ebstring, *new_ptr;
76 int ret;
77
78 if(ebstring != NULL){
79 offset=strlen(ebstring);
80 bufsize=strlen(ebstring)+80;
81 }
82 while(1){
83 new_ptr = realloc(ret_string, bufsize);
84 if(new_ptr == NULL){
85 if(ret_string != NULL){
86 free(ret_string);
87 }
88 return NULL;
89 }
90 ret_string = new_ptr;
91 va_start(args, format);
92 #if defined(WIN32)
93 ret = _vsnprintf(ret_string+offset, bufsize-offset, format, args);
94 #else
95 ret = vsnprintf(ret_string+offset, bufsize-offset, format, args);
96 #endif
97 va_end(args);
98 if((ret > -1) && (ret < bufsize)){
99 break;
100 }
101 if(ret > -1){
102 bufsize = ret+1;
103 }
104 else{
105 bufsize *= 2;
106 }
107 }
108 return ret_string;
109 }
110
111 char *EbStringFree(char *ebstring)
112 {
113 free(ebstring);
114 return NULL;
115 }
116
117 char *EbStringGetString(const char *string, int len, char trim)
118 {
119 char *ret_string = (char *)malloc(len+1);
120 int i;
121
122 strncpy(ret_string, string, len);
123 ret_string[len] = '\0';
124
125 if(trim != '\0'){
126 for(i=len-1; i>=0; i--){
127 if(ret_string[i] != trim){
128 break;
129 }
130 ret_string[i] = '\0';
131 }
132 }
133
134 return ret_string;
135 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26