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