X-Git-Url: http://rtime.felk.cvut.cz/gitweb/can-utils.git/blobdiff_plain/f95fc47ec86c4cb061c9d3636b28ac62135b6f16..HEAD:/log2long.c diff --git a/log2long.c b/log2long.c index 05ef800..2c52c78 100644 --- a/log2long.c +++ b/log2long.c @@ -1,7 +1,3 @@ -/* - * $Id$ - */ - /* * log2long.c - convert compact CAN frame representation into user readable * @@ -12,8 +8,7 @@ * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions, the following disclaimer and - * the referenced file 'COPYING'. + * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. @@ -23,8 +18,8 @@ * * Alternatively, provided that this notice is retained in full, this * software may be distributed under the terms of the GNU General - * Public License ("GPL") version 2 as distributed in the 'COPYING' - * file from the main directory of the linux kernel source. + * Public License ("GPL") version 2, in which case the provisions of the + * GPL apply INSTEAD OF those given above. * * The provided data structures and external interfaces from this code * are not restricted to be used by modules with a GPL compatible license. @@ -42,7 +37,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * - * Send feedback to + * Send feedback to * */ @@ -53,19 +48,35 @@ #include "lib.h" +#define COMMENTSZ 200 +#define BUFSZ (sizeof("(1345212884.318850)") + IFNAMSIZ + 4 + CL_CFSZ + COMMENTSZ) /* for one line in the logfile */ + int main(int argc, char **argv) { - char buf[100], timestamp[100], device[100], ascframe[100]; - struct can_frame cf; + char buf[BUFSZ], timestamp[BUFSZ], device[BUFSZ], ascframe[BUFSZ]; + struct canfd_frame cf; + int mtu, maxdlen; + + while (fgets(buf, BUFSZ-1, stdin)) { + if (sscanf(buf, "%s %s %s", timestamp, device, ascframe) != 3) + return 1; + + mtu = parse_canframe(ascframe, &cf); + if (mtu == CAN_MTU) + maxdlen = CAN_MAX_DLEN; + else if (mtu == CANFD_MTU) + maxdlen = CANFD_MAX_DLEN; + else { + fprintf(stderr, "read: incomplete CAN frame\n"); + return 1; + } + + sprint_long_canframe(ascframe, &cf, + (CANLIB_VIEW_INDENT_SFF | CANLIB_VIEW_ASCII), + maxdlen); /* with ASCII output */ - while (fgets(buf, 99, stdin)) { - if (sscanf(buf, "%s %s %s", timestamp, device, ascframe) != 3) - return 1; - if (parse_canframe(ascframe, &cf)) - return 1; - sprint_long_canframe(ascframe, &cf, 1); /* with ASCII output */ - printf("%s %s %s\n", timestamp, device, ascframe); - } + printf("%s %s %s\n", timestamp, device, ascframe); + } - return 0; + return 0; }