| /* log.c - Log to logcat. |
| * |
| * Copyright 2016 The Android Open Source Project |
| |
| USE_LOG(NEWTOY(log, "<1p:t:", TOYFLAG_USR|TOYFLAG_SBIN)) |
| |
| config LOG |
| bool "log" |
| depends on TOYBOX_ON_ANDROID |
| default y |
| help |
| usage: log [-p PRI] [-t TAG] MESSAGE... |
| |
| Logs message to logcat. |
| |
| -p use the given priority instead of INFO: |
| d: DEBUG e: ERROR f: FATAL i: INFO v: VERBOSE w: WARN s: SILENT |
| -t use the given tag instead of "log" |
| */ |
| |
| #define FOR_log |
| #include "toys.h" |
| #include <android/log.h> |
| |
| GLOBALS( |
| char *tag; |
| char *pri; |
| ) |
| |
| void log_main(void) |
| { |
| android_LogPriority pri = ANDROID_LOG_INFO; |
| char *s = toybuf; |
| int i; |
| |
| if (TT.pri) { |
| i = stridx("defisvw", tolower(*TT.pri)); |
| if (i==-1 || strlen(TT.pri)!=1) error_exit("bad -p '%s'", TT.pri); |
| pri = (android_LogPriority []){ANDROID_LOG_DEBUG, ANDROID_LOG_ERROR, |
| ANDROID_LOG_FATAL, ANDROID_LOG_INFO, ANDROID_LOG_SILENT, |
| ANDROID_LOG_VERBOSE, ANDROID_LOG_WARN}[i]; |
| } |
| if (!TT.tag) TT.tag = "log"; |
| |
| for (i = 0; toys.optargs[i]; i++) { |
| if (i) *s++ = ' '; |
| if ((s-toybuf)+strlen(toys.optargs[i])>=1024) { |
| memcpy(s, toys.optargs[i], 1024-(s-toybuf)); |
| toybuf[1024] = 0; |
| error_msg("log cut at 1024 bytes"); |
| |
| break; |
| } |
| s = stpcpy(s, toys.optargs[i]); |
| } |
| |
| __android_log_write(pri, TT.tag, toybuf); |
| } |