void end_log_block(logger_t* logger) { lstring_t* block_name; --logger->num_blocks; block_name = logger->blocks[logger->num_blocks].name; write_log_line(logger, "END", lstring_cstr(block_name)); free_lstring(block_name); }
static duk_ret_t js_Logger_write(duk_context* ctx) { const char* text = duk_to_string(ctx, 0); logger_t* logger; duk_push_this(ctx); logger = duk_require_sphere_obj(ctx, -1, "Logger"); write_log_line(logger, NULL, text); return 0; }
int ps4sh_log_read(int fd) { int ret; int size = sizeof(struct sockaddr_in); static char buf[1024]; static int loc = 0; struct sockaddr_in dest_addr; if(loc == 0) memset(buf, 0x0, sizeof(buf)); memset(&(dest_addr), '\0', size); /* Receive from, size must be at least 1 smaller than buffer for a NULL */ ret = recvfrom(fd, buf + loc, sizeof(buf) - loc - 1, 0,(struct sockaddr *)&dest_addr, &size); if (ret == -1) { debugNetPrintf(ERROR,"recvfrom error %s\n",strerror(errno)); } loc += ret; if (log_to_file) { write(log_f_fd, buf, strlen(buf)); loc = 0; /* log to file isn't line orientated */ } else { if(((strchr(buf, '\n')) || (sizeof(buf) - loc - 1) <= 0)) { /* Ideally we want entire lines but just in case check for NL at end of string */ int str_size = strlen(buf); if(buf[str_size - 1] != '\n') buf[str_size - 1] = '\n'; write_log_line(buf); fflush(stdout); loc = 0; } } return ret; }
bool begin_log_block(logger_t* logger, const char* title) { lstring_t* block_name; struct log_block* blocks; int new_count; new_count = logger->num_blocks + 1; if (new_count > logger->max_blocks) { if (!(blocks = realloc(logger->blocks, new_count * 2))) return false; logger->blocks = blocks; logger->max_blocks = new_count * 2; } if (!(block_name = lstring_from_cstr(title))) return false; write_log_line(logger, "BEGIN", lstring_cstr(block_name)); logger->blocks[logger->num_blocks].name = block_name; ++logger->num_blocks; return true; }