static Eina_Bool expr_type_error(const Eolian_Expression *expr, int type, int mask) { char buf[512]; char ebuf[256]; char tbuf[128]; mask_to_str(mask, ebuf); mask_to_str(type, tbuf); snprintf(buf, sizeof(buf), "invalid type (given %s, expected %s)", tbuf, ebuf); return node_error((const Eolian_Object*)expr, buf); }
static Eina_Bool expr_type_mismatch_error(const Eolian_Expression *lhs, const Eolian_Expression *rhs) { char buf[512]; char tbuf[256]; char ebuf[256]; mask_to_str(expr_type_to_mask(lhs), tbuf); mask_to_str(expr_type_to_mask(rhs), ebuf); snprintf(buf, sizeof(buf), "mismatched types (%s vs %s)", tbuf, ebuf); return node_error((const Eolian_Object*)rhs, buf); }
static Logfile * logfile_describe (Logfile *log, char **args) { char *targets = NULL; if (!log) { say("DESCRIBE: You need to specify a logfile first"); return NULL; } targets = logfile_get_targets(log); say(" Logfile refnum %d is %s", log->refnum, onoff[log->active]); say("\t Logical name: %s", log->name); say("\t Filename: %s", log->filename ? log->filename : "<NONE>"); say("\t Type: %s", logtype[log->type]); if (log->servref == NOSERV) say("\t Server: ALL"); else say("\t Server: %d", log->servref); say("\tTarget/Refnum: %s", targets ? targets : "<NONE>"); say("\t Level: %s", mask_to_str(&log->mask)); say("\t Rewrite Rule: %s", log->rewrite ? log->rewrite : "<NONE>"); say("\t Mangle rules: %s", log->mangle_desc ? log->mangle_desc : "<NONE>"); new_free(&targets); return log; }
/* * $levelctl(LEVELS) * $levelctl(ADD name) * $levelctl(ALIAS old-name new-name) * $levelctl(LOOKUP name-or-number) * $levelctl(NORMALIZE string) */ char *levelctl (char *input) { char *listc, *retval; const char *newlevel, *oldlevel; int oldnum, newnum; GET_FUNC_ARG(listc, input); if (!my_strnicmp(listc, "LEVELS", 2)) { retval = get_all_levels(); RETURN_MSTR(retval); } else if (!my_strnicmp(listc, "ADD", 2)) { GET_FUNC_ARG(newlevel, input); newnum = add_new_level(newlevel); RETURN_INT(newnum); } else if (!my_strnicmp(listc, "ALIAS", 2)) { GET_FUNC_ARG(oldlevel, input); GET_FUNC_ARG(newlevel, input); oldnum = str_to_level(oldlevel); newnum = add_new_level_alias(oldnum, newlevel); RETURN_INT(newnum); } else if (!my_strnicmp(listc, "LOOKUP", 2)) { GET_FUNC_ARG(newlevel, input); if (is_number(newlevel)) { oldnum = STR2INT(newlevel); oldlevel = level_to_str(oldnum); RETURN_STR(oldlevel); } else { oldnum = str_to_level(newlevel); RETURN_INT(oldnum); } } else if (!my_strnicmp(listc, "NORMALIZE", 1)) { Mask m; const char *r; char *err = NULL; mask_unsetall(&m); str_to_mask(&m, input, &err); /* Errors are ignored */ r = mask_to_str(&m); RETURN_STR(r); } RETURN_EMPTY; }
/* * $logctl(NEW) * $logctl(REFNUMS [ACTIVE|INACTIVE|ALL]) * $logctl(REFNUM log-desc) * $logctl(ADD log-desc [target]) * $logctl(DELETE log-desc [target]) * $logctl(GET <refnum> [LIST]) * $logctl(SET <refnum> [ITEM] [VALUE]) * $logctl(MATCH [pattern]) * $logctl(PMATCH [pattern]) * * [LIST] and [ITEM] are one of the following * REFNUM The refnum for the log (GET only) * NAME The logical name for the log * FILENAME The filename this log writes to * SERVER The server this log associates with (-1 for any) * TARGETS All of the targets for this log * LEVEL The Lastlog Level for this log * REWRITE The rewrite rule for this log * MANGLE The mangle rule for this log * STATUS 1 if log is on, 0 if log is off. * TYPE Either "TARGET", "WINDOW", or "SERVER" */ char *logctl (char *input) { char *refstr; char *listc; int val; Logfile *log; GET_FUNC_ARG(listc, input); if (!my_strnicmp(listc, "NEW", 3)) { log = new_logfile(); RETURN_INT(log->refnum); } else if (!my_strnicmp(listc, "LAST_CREATED", 12)) { RETURN_INT(last_logref); } else if (!my_strnicmp(listc, "REFNUMS", 7)) { char * retval = NULL; int active; GET_FUNC_ARG(refstr, input); if (!my_stricmp(refstr, "ACTIVE")) active = 1; else if (!my_stricmp(refstr, "INACTIVE")) active = 0; else if (!my_stricmp(refstr, "ALL")) active = -1; else RETURN_EMPTY; for (log = logfiles; log; log = log->next) { if (active != -1 && active != log->active) continue; malloc_strcat_word(&retval, space, ltoa(log->refnum), DWORD_NO); } RETURN_MSTR(retval); } else if (!my_strnicmp(listc, "REFNUM", 6)) { GET_FUNC_ARG(refstr, input); if (!(log = get_log_by_desc(refstr))) RETURN_EMPTY; RETURN_INT(log->refnum); } else if (!my_strnicmp(listc, "ADD", 2)) { GET_FUNC_ARG(refstr, input); if (!(log = get_log_by_desc(refstr))) RETURN_EMPTY; logfile_add(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "DELETE", 2)) { GET_FUNC_ARG(refstr, input); if (!(log = get_log_by_desc(refstr))) RETURN_EMPTY; logfile_remove(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "GET", 2)) { GET_FUNC_ARG(refstr, input); if (!(log = get_log_by_desc(refstr))) RETURN_EMPTY; GET_FUNC_ARG(listc, input); if (!my_strnicmp(listc, "REFNUM", 3)) { RETURN_INT(log->refnum); } else if (!my_strnicmp(listc, "NAME", 3)) { RETURN_STR(log->name); } else if (!my_strnicmp(listc, "FILENAME", 3)) { RETURN_STR(log->filename); } else if (!my_strnicmp(listc, "SERVER", 3)) { RETURN_INT(log->servref); } else if (!my_strnicmp(listc, "TARGETS", 3)) { char *ret = logfile_get_targets(log); RETURN_MSTR(ret); } else if (!my_strnicmp(listc, "LEVEL", 3)) { const char *ret = mask_to_str(&log->mask); RETURN_STR(ret); } else if (!my_strnicmp(listc, "REWRITE", 3)) { RETURN_STR(log->rewrite); } else if (!my_strnicmp(listc, "MANGLE", 3)) { RETURN_STR(log->mangle_desc); } else if (!my_strnicmp(listc, "STATUS", 3)) { RETURN_INT(log->active); } else if (!my_strnicmp(listc, "TYPE", 3)) { RETURN_STR(logtype[log->type]); } else if (!my_strnicmp(listc, "ACTIVITY", 1)) { RETURN_INT(log->activity); } } else if (!my_strnicmp(listc, "SET", 1)) { GET_FUNC_ARG(refstr, input); if (!(log = get_log_by_desc(refstr))) RETURN_EMPTY; GET_FUNC_ARG(listc, input); if (!my_strnicmp(listc, "NAME", 3)) { logfile_name(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "FILENAME", 3)) { logfile_filename(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "SERVER", 3)) { logfile_server(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "TARGETS", 3)) { clean_log_targets(log); logfile_add(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "LEVEL", 3)) { logfile_level(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "REWRITE", 3)) { logfile_rewrite(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "MANGLE", 3)) { logfile_mangle(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "STATUS", 3)) { GET_INT_ARG(val, input); if (val) logfile_on(log, &input); else logfile_off(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "TYPE", 3)) { logfile_type(log, &input); RETURN_INT(1); } else if (!my_strnicmp(listc, "ACTIVITY", 1)) { logfile_activity(log, &input); RETURN_INT(1); } } else if (!my_strnicmp(listc, "MATCH", 1)) { RETURN_EMPTY; /* Not implemented for now. */ } else if (!my_strnicmp(listc, "PMATCH", 1)) { RETURN_EMPTY; /* Not implemented for now. */ } else if (!my_strnicmp(listc, "CURRENT", 1)) { RETURN_INT(current_log_refnum); } else RETURN_EMPTY; RETURN_EMPTY; }