static C_INLINE void _genericLogger_defaultCallbackp(void *userDatavp, genericLoggerLevel_t logLeveli, const char *msgs) { /* We are NOT going to do a general log4c mechanism (this can come later), using genericLogger in fact */ /* I.e. we are fixing the default output to be: DD/MM/YYYY hh::mm::ss PREFIX MESSAGE */ const char *prefixs = (logLeveli == GENERICLOGGER_LOGLEVEL_TRACE ) ? "TRACE" : (logLeveli == GENERICLOGGER_LOGLEVEL_DEBUG ) ? "DEBUG" : (logLeveli == GENERICLOGGER_LOGLEVEL_INFO ) ? "INFO" : (logLeveli == GENERICLOGGER_LOGLEVEL_NOTICE ) ? "NOTICE" : (logLeveli == GENERICLOGGER_LOGLEVEL_WARNING ) ? "WARN" : (logLeveli == GENERICLOGGER_LOGLEVEL_ERROR ) ? "ERROR" : (logLeveli == GENERICLOGGER_LOGLEVEL_CRITICAL ) ? "CRITICAL" : (logLeveli == GENERICLOGGER_LOGLEVEL_ALERT ) ? "ALERT" : (logLeveli == GENERICLOGGER_LOGLEVEL_EMERGENCY) ? "EMERGENCY" : "UNKOWN"; char *dates = _dateBuilders("%d/%m/%Y %H:%M:%S"); char *localMsgs = _messageBuilders("%s %9s %s\n", dates, prefixs, (msgs != NULL) ? msgs : ""); int filenoStderri = C_FILENO(stderr); size_t bytesWritenl = 0; char *s = localMsgs; size_t countl = strlen(s); while (bytesWritenl < countl) { bytesWritenl += C_WRITE(filenoStderri, s+bytesWritenl, countl-bytesWritenl); } if (dates != _dateBuilder_internalErrors) { free(dates); } if (localMsgs != _messageBuilder_internalErrors) { free(localMsgs); } }
static void do_service_request(struct packet_handler *c, struct ssh_connection *connection, struct lsh_string *packet) { CAST(service_handler, closure, c); struct simple_buffer buffer; unsigned msg_number; int name; simple_buffer_init(&buffer, packet->length, packet->data); if (parse_uint8(&buffer, &msg_number) && (msg_number == SSH_MSG_SERVICE_REQUEST) && parse_atom(&buffer, &name) && parse_eod(&buffer)) { if (name) { CAST_SUBTYPE(command, service, ALIST_GET(closure->services, name)); if (service) { /* Don't accept any further service requests */ connection->dispatch[SSH_MSG_SERVICE_REQUEST] = &connection_fail_handler; /* Start service */ #if DATAFELLOWS_WORKAROUNDS if (connection->peer_flags & PEER_SERVICE_ACCEPT_KLUDGE) C_WRITE(connection, format_service_accept_kludge()); else #endif /* DATAFELLOWS_WORKAROUNDS */ C_WRITE(connection, format_service_accept(name)); COMMAND_CALL(service, connection, closure->c, closure->e); return; } } EXCEPTION_RAISE(connection->e, make_protocol_exception(SSH_DISCONNECT_SERVICE_NOT_AVAILABLE, NULL)); } else PROTOCOL_ERROR(connection->e, "Invalid SERVICE_REQUEST message"); }
static void do_client_winch_handler(struct window_change_callback *s, struct interact *tty) { CAST(client_winch_handler, self, s); struct terminal_dimensions dims; if (!INTERACT_WINDOW_SIZE(tty, &dims)) return; C_WRITE(self->channel->connection, format_window_change(self->channel, &dims)); }