at work
This commit is contained in:
40
works/fileoper.c
Normal file
40
works/fileoper.c
Normal 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
74
works/handlers.c
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user