Doxygen Source Code Documentation
string.c File Reference
#include "nc.h"#include <stdlib.h>#include <string.h>#include <ctype.h>#include <assert.h>#include "ncx.h"#include "rnd.h"Go to the source code of this file.
Functions | |
| void | free_NC_string (NC_string *ncstrp) |
| int | NC_check_name (const char *name) |
| NC_string * | new_NC_string (size_t slen, const char *str) |
| int | set_NC_string (NC_string *ncstrp, const char *str) |
Function Documentation
|
|
Definition at line 21 of file string.c. References free. Referenced by free_NC_attr(), free_NC_dim(), free_NC_var(), nc_rename_att(), nc_rename_dim(), nc_rename_var(), new_NC_attr(), new_NC_dim(), new_NC_var(), v1h_get_NC_attr(), v1h_get_NC_dim(), v1h_get_NC_string(), and v1h_get_NC_var().
00022 {
00023 if(ncstrp==NULL)
00024 return;
00025 free(ncstrp);
00026 }
|
|
|
Definition at line 35 of file string.c. References name. Referenced by nc_def_dim(), nc_def_var(), nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), nc_put_att_uchar(), nc_rename_att(), nc_rename_dim(), and nc_rename_var().
00036 {
00037 const char *cp = name;
00038 assert(name != NULL);
00039
00040 if(*name == 0)
00041 return NC_EBADNAME; /* empty names disallowed */
00042
00043 for(; *cp != 0; cp++)
00044 {
00045 int ch = *cp;
00046 if(!isalnum(ch))
00047 {
00048 if(ch != '_' && ch != '-' && ch != '.')
00049 return NC_EBADNAME;
00050 }
00051 }
00052 if(cp - name > NC_MAX_NAME)
00053 return NC_EMAXNAME;
00054
00055 return NC_NOERR;
00056 }
|
|
||||||||||||
|
Definition at line 66 of file string.c. References _RNDUP, NC_string::cp, M_RNDUP, malloc, NC_string::nchars, and X_ALIGN. Referenced by nc_rename_att(), nc_rename_dim(), nc_rename_var(), new_NC_attr(), new_NC_dim(), new_NC_var(), and v1h_get_NC_string().
00067 {
00068 NC_string *ncstrp;
00069 size_t sz = M_RNDUP(sizeof(NC_string)) + slen + 1;
00070
00071 #if 0
00072 sz = _RNDUP(sz, X_ALIGN);
00073 #endif
00074
00075 ncstrp = (NC_string *)malloc(sz);
00076 if( ncstrp == NULL )
00077 return NULL;
00078 (void) memset(ncstrp, 0, sz);
00079
00080 ncstrp->nchars = sz - M_RNDUP(sizeof(NC_string)) - 1;
00081 assert(ncstrp->nchars + 1 > slen);
00082 ncstrp->cp = (char *)ncstrp + M_RNDUP(sizeof(NC_string));
00083
00084 if(str != NULL && *str != 0)
00085 {
00086 (void) strncpy(ncstrp->cp, str, ncstrp->nchars +1);
00087 ncstrp->cp[ncstrp->nchars] = 0;
00088 }
00089
00090 return(ncstrp);
00091 }
|
|
||||||||||||
|
Definition at line 101 of file string.c. References NC_string::cp, and NC_string::nchars. Referenced by nc_rename_att(), nc_rename_dim(), and nc_rename_var().
00102 {
00103 size_t slen;
00104 size_t diff;
00105
00106 assert(str != NULL && *str != 0);
00107
00108 slen = strlen(str);
00109
00110 if(ncstrp->nchars < slen)
00111 return NC_ENOTINDEFINE;
00112
00113 (void) memcpy(ncstrp->cp, str, slen);
00114 diff = ncstrp->nchars - slen;
00115 if(diff != 0)
00116 (void) memset(ncstrp->cp + slen, 0, diff);
00117
00118 return NC_NOERR;
00119 }
|