3long str2l_range(
const char *str,
long min,
long max,
const char *name) {
5 long val = strtol(str, &endptr, 10);
7 fprintf(stderr,
"%s: Not specified.\n", name);
9 }
else if(*endptr !=
'\0') {
10 fprintf(stderr,
"%s: `%s' is not integer.\n", name, str);
12 }
else if(val < min || max < val) {
14 fprintf(stderr,
"%s: %s out of range: %ld -\n", str, name, min);
16 fprintf(stderr,
"%s: %s out of range: %ld - %ld\n", str, name, min, max);
27 if((p = malloc(size)) == NULL) {
28 fprintf(stderr,
"%s: cannot allocate memory\n", tag);
31 return memset(p, 0, size);
34void *
calloc_chk(
size_t nmemb,
size_t size,
const char *tag)
38 if((p = calloc(nmemb, size)) == NULL) {
39 fprintf(stderr,
"%s: cannot allocate memory\n", tag);
70 for(
int i = strlen(s) - 1; i > 0 && (s[i] ==
'\n' || s[i] ==
'\r' || s[i] ==
' ' || s[i] ==
'\t'); i--) {
79 for(
int i = 0; s[i]; i++) {
81 if(s[i] ==
'\'' && s[i+1] !=
'\'' && (quoting ==
false || s[i-1] !=
'\'')) {
84 }
else if(quoting ==
false && s[i] ==
';') {
96 for(
int i = 0; i < l-1-i; i++) {
void strip_end(char *s)
文字列の末尾から、改行と空白とタブを削除する
char * strndup_chk(const char *s, size_t len, const char *tag)
malloc_chkを実行してメモリを確保し、コピーした文字列の指定した長さの部分を返す
void * calloc_chk(size_t nmemb, size_t size, const char *tag)
領域の数とサイズを指定してメモリーを確保するcallocを実行する
void strip_casl2_comment(char *s)
文字列から「'」以降の文字列をCASL IIのコメントとして削除する。「''」の場合は除く
char * strrev(const char *s)
逆にした文字列を返す
void * malloc_chk(size_t size, const char *tag)
mallocを実行し、0で初期化する
long str2l_range(const char *str, long min, long max, const char *name)
数値文字列が特定の範囲の数値かチェックし、正の場合は変換した数値、不正の場合は0を返す
char * strdup_chk(const char *s, const char *tag)
malloc_chkを実行してメモリを確保し、コピーした文字列を返す