From 26dc73c763de25196a60caba7f7815b13cf2f91f Mon Sep 17 00:00:00 2001 From: Alex Musolino Date: Sat, 8 Jun 2019 15:56:03 +0930 Subject: [PATCH] file(1): recognise unified diff output --- sys/src/cmd/file.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/src/cmd/file.c b/sys/src/cmd/file.c index b64bb13a4..854e8e07c 100644 --- a/sys/src/cmd/file.c +++ b/sys/src/cmd/file.c @@ -167,6 +167,7 @@ int longoff(void); int istar(void); int isface(void); int isexec(void); +int isudiff(void); int p9bitnum(char*, int*); int p9subfont(uchar*); void print_utf(void); @@ -183,6 +184,7 @@ int (*call[])(void) = iff, /* interchange file format (strings) */ longoff, /* recognizable by 4 bytes at some offset */ isoffstr, /* recognizable by string at some offset */ + isudiff, /* unified diff output */ isrfc822, /* email file */ ismbox, /* mail box */ istar, /* recognizable by tar checksum */ @@ -982,6 +984,25 @@ char* html_string[] = { 0, }; +int +isudiff(void) +{ + char *p; + + p = (char*)buf; + if((p = strstr(p, "diff")) != nil) + if((p = strchr(p, '\n')) != nil) + if(strncmp(++p, "--- ", 4) == 0) + if((p = strchr(p, '\n')) != nil) + if(strncmp(++p, "+++ ", 4) == 0) + if((p = strchr(p, '\n')) != nil) + if(strncmp(++p, "@@ ", 3) == 0){ + print("%s\n", mime ? "text/plain" : "unified diff output"); + return 1; + } + return 0; +} + int ishtml(void) { -- 2.44.0