This commit is contained in:
2023-08-18 22:38:43 +02:00
parent db3bbf21c8
commit bdfed6f56b
20 changed files with 609 additions and 291 deletions

40
works/fileoper.c Normal file
View File

@@ -0,0 +1,40 @@
char* path_last(const char* path) {
char buffer[1024];
size_t psize = strlen(path);
strcpy(buffer, path);
buffer[psize] = '\0';
if (buffer[psize - 1] == '/') {
buffer[--psize] = '\0';
}
size_t pos = psize;
for (size_t i = 1; i < psize; i++) {
if (buffer[i] == '/') pos = i;
}
char* b = &buffer[++pos];
int bsize = strlen(b);
char* res = malloc(bsize + 1);
strcpy(res, b);
//printf("\n%s\n", res);
return res;
}
char* path_file(const char* path) {
char buffer[1024];
size_t psize = strlen(path);
strcpy(buffer, path);
buffer[psize] = '\0';
//if (buffer[psize - 1] == '/') {
// buffer[--psize] = '\0';
//}
size_t pos = psize;
for (size_t i = 1; i < psize; i++) {
if (buffer[i] == '/') pos = i;
}
char* b = &buffer[++pos];
int bsize = strlen(b);
char* res = malloc(bsize + 1);
strcpy(res, b);
//printf("\n%s\n", res);
return res;
}

74
works/handlers.c Normal file
View File

@@ -0,0 +1,74 @@
int handler4(int socket) {
int err = 0;
rcache_t cache;
jlexer_t lexer;
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);
rcache_init(&cache, socket);
jlexer_init(&lexer, &cache);
char token[1024];
int type = 0;
while ((type = jlexer_gettoken(&lexer, token)) != JLEXTOK_END) {
printf("%d: %s\n", type, token);
}
printf("= %d: %s\n", type, token);
//rcache_destroy(&cache);
return 0;
}
int handler5(int socket) {
int err = 0;
rcache_t cache;
rcache_init(&cache, socket);
char c = '\0';
while ((c = rcache_getc(&cache)) != EOF) {
printf("%c", c);
if (c == '}') {
dprintf(socket, "good bay!\n");
close(socket);
}
}
rcache_destroy(&cache);
return 0;
}
int handler3(int socket) {
//struct timeval tv;
//tv.tv_sec = 1;
//tv.tv_usec = 0;
//setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);
const int bsize = 1024;
char buffer[bsize];
ssize_t rsize = 0;
ssize_t tsize = 0;
while(true) {
memset(buffer, '\0', bsize);
rsize = read(socket, buffer, bsize);
if (rsize < 0) {
log_debug("Socket error: %s", strerror(errno));
if (errno != EAGAIN) {
return -1;
}
} else if (rsize == 0) {
log_debug("Socket rsize is zero");
return 0;
} else {
tsize += rsize;
printf("%ld:%s\n", rsize, buffer);
}
}
return 0;
}