static void lower_case(LPC_frame f, int nargs, LPC_value retval) { LPC_value val; LPC_string str; LPC_dataspace data; char *p; unsigned int i; /* fetch the argument string */ val = lpc_frame_arg(f, nargs, 0); str = lpc_string_getval(val); /* make a copy */ data = lpc_frame_dataspace(f); str = lpc_string_new(data, lpc_string_text(str), lpc_string_length(str)); /* turn to lowercase */ p = lpc_string_text(str); for (i = lpc_string_length(str); i != 0; --i) { if (*p >= 'A' && *p <= 'Z') { *p += 'a' - 'A'; } p++; } /* put result in return value */ lpc_string_putval(retval, str); }
static void filelastmod(LPC_frame f, int nargs, LPC_value retval) { struct stat sb; LPC_value val; LPC_string mudpath; char *fullpath; val = lpc_frame_arg(f, nargs, 0); mudpath = lpc_string_getval(val); query_full_path(&fullpath, lpc_string_text(mudpath)); if (stat(fullpath, &sb) == -1) { return; } free(fullpath); lpc_int_putval(retval, sb.st_mtime); }