static int str_cat_params(str* s, const str* param) { striter i; striter_loop(&i, param, 0) if (!str_cat3s(s, " [", i.startptr, "]")) return 0; return 1; }
static int build_received(str* s, str *seqno) { if (!str_cats(s, "Received: from ")) return 0; if (!str_catfromby(s, session_getstr("helo_domain"), remote_host, remote_ip)) return 0; if (!str_cats(s, "\n by ")) return 0; if (!str_catfromby(s, local_host, 0, local_ip)) return 0; if (!str_cat4s(s, "\n with ", session_protocol(), " via ", linkproto)) return 0; if (!str_cat4s(s, " port ", remote_port, "/", local_port)) return 0; if (!str_cat2s(s, " id ", seqno->s)) return 0; if (!str_cat3s(s, "; ", date_string(), "\n")) return 0; return 1; }
static void cmd_listsys(void) { DIR* dir; direntry* entry; str data = {0,0,0}; if ((dir = opendir(CRONTAB_DIR)) == 0) respond("ZCould not open crontabs directory"); while ((entry = readdir(dir)) != 0) { if (entry->d_name[0] != ':') continue; make_filename(entry->d_name); if (!str_cat3s(&data, "==> ", entry->d_name, " <==\n")) respond("ZOut of memory"); if (ibuf_openreadclose(filename.s, &data) == -1) respond("ZCould not read crontab"); if (!str_catc(&data, '\n')) respond("ZOut of memory"); } closedir(dir); respond_okstr(&data); }