parent
1169a52115
commit
7414651893
@ -0,0 +1,23 @@ |
||||
#define _POSIX_C_SOURCE 200809l |
||||
|
||||
#include <stdlib.h> |
||||
|
||||
#include "fstr.h" |
||||
#include "config.h" |
||||
|
||||
void fstr_add_space(fstr_t *fs) |
||||
{ |
||||
erealloc(fs->s, fs->len + fs->space + DEF_CHUNKSIZE + 1); |
||||
fs->space += DEF_CHUNKSIZE; |
||||
} |
||||
|
||||
void fstr_append_char(fstr_t *fs, char c) |
||||
{ |
||||
if (!fs) |
||||
return; |
||||
if (fs->space < 1) |
||||
fstr_add_space(fs); |
||||
fs->s[fs->len++] = c; |
||||
fs->s[fs->len] = '\0'; |
||||
fs->space--; |
||||
} |
@ -0,0 +1,14 @@ |
||||
#ifndef _MSH_FSTR_H |
||||
#define _MSH_FSTR_H |
||||
|
||||
// current length of the string and remaining space, total allocated space is
|
||||
// len + space
|
||||
typedef struct _fstr { |
||||
unsigned long int len; |
||||
unsigned long int space; |
||||
char *s; |
||||
} fstr_t; |
||||
|
||||
void fstr_append_char(fstr_t *, char); |
||||
|
||||
#endif |
@ -0,0 +1,8 @@ |
||||
.POSIX: |
||||
|
||||
CFLAGS = -Wall -Werror -pedantic -Wextra -std=c11
|
||||
|
||||
msh: msh.c fstr.c |
||||
|
||||
clean: |
||||
rm -f msh *.o
|
Reference in new issue