fishtalk/src/cmd.c

39 lines
853 B
C
Raw Normal View History

2026-05-23 02:26:17 +09:00
#include <fishtalk.h>
void ft_cmd_queue(FT_HANDLE handle, const char* buffer){
int i;
for(i = 0; buffer[i] != 0; i++){
if(buffer[i] == '\n'){
int j;
long old = 0;
for(j = 0; j <= handle->buffer_size; j++){
if(j == handle->buffer_size || handle->buffer[j] == '[' || handle->buffer[j] == ']'){
char* buf = &handle->buffer[old];
int len, sj;
for(sj = j; sj >= old; sj--){
if(!FT_IS_SKIPPABLE(handle->buffer[sj])) break;
}
len = sj - old;
if(j == handle->buffer_size || handle->buffer[j] == '['){
fprintf(stderr, "[");
fwrite(buf, len, 1, stderr);
fprintf(stderr, "]\n");
old = j;
}
}
}
handle->buffer_size = 0;
}else{
if(handle->buffer_size == 0 && FT_IS_SKIPPABLE(buffer[i])) continue;
handle->buffer[handle->buffer_size++] = buffer[i];
}
}
}