From b1f9107f2206acf2e15a5a0a7318470d369c3ca6 Mon Sep 17 00:00:00 2001 From: Erik Hofman Date: Thu, 30 Mar 2017 15:56:15 +0200 Subject: [PATCH] Add the vendor tag --- utils/xmlgrep/metadata.c | 123 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 3 deletions(-) diff --git a/utils/xmlgrep/metadata.c b/utils/xmlgrep/metadata.c index c9c6ace18..2afbd17f6 100644 --- a/utils/xmlgrep/metadata.c +++ b/utils/xmlgrep/metadata.c @@ -11,6 +11,9 @@ #define PRINT(a) \ tag = (a); if (tag) { strncat(s, " ", TS-strlen(s)); strncat(s, tag, TS-strlen(s)); strncat(s, "\n", TS-strlen(s)); } +static unsigned int tags_level = 0; +static unsigned int print_tags = 0; + char * getCommandLineOption(int argc, char **argv, char const *option) { @@ -55,7 +58,6 @@ char *strlwr(char *str) return str; } -static unsigned int tags_level = 0; void print_xml(FILE *fd, void *id, char *tags) { static int level = 1; @@ -184,6 +186,106 @@ updateFile(char *fname, char *tags) } } +const char* +vendor_tag(char *desc) +{ + char *p = strlwr(desc); + if (strstr(p, "boeing")) return "boeing"; + if (strstr(p, "airbus")) return "airbus"; + if (strstr(p, "antonov")) return "antonov"; + if (strstr(p, "tupolev")) return "tupolev"; + if (strstr(p, "ilyoushin")) return "ilyoushin"; + if (strstr(p, "bombardier")) return "bombardier"; + if (strstr(p, "fokker")) return "fokker"; + if (strstr(p, "lockheed")) return "lockheed"; + if (strstr(p, "general-dynamics")) return "general-dynamics"; + if (strstr(p, "general dynamics")) return "general-dynamics"; + if (strstr(p, "mig")) return "mikoyan-gurevich"; + if (strstr(p, "mikoyan gurevich")) return "mikoyan-gurevich"; + if (strstr(p, "mikoyan-gurevich")) return "mikoyan-gurevich"; + if (strstr(p, "sukoi")) return "sukoi"; + if (strstr(p, "cessna")) return "cessna"; + if (strstr(p, "fairchild")) return "fairchild"; + if (strstr(p, "dassult")) return "dassult"; + if (strstr(p, "dornier")) return "dornier"; + if (strstr(p, "arado")) return "arado"; + if (strstr(p, "schleicher")) return "schleicher"; + if (strstr(p, "avro")) return "avro"; + if (strstr(p, "saab")) return "saab"; + if (strstr(p, "dassault")) return "dassault"; + if (strstr(p, "aermacchi")) return "aermacchi"; + if (strstr(p, "arsenal")) return "arsenal"; + if (strstr(p, "rockwell")) return "rockwell"; + if (strstr(p, "northrop")) return "northrop"; + if (strstr(p, "grumman")) return "grumman"; + if (strstr(p, "mc donnell") && strstr(p, "douglas")) return "mc-donnell-douglas"; + if (strstr(p, "douglas")) return "douglas"; + if (strstr(p, "mc donnell")) return "mc-donnell"; + if (strstr(p, "mc-donnell")) return "mc-donnell"; +// if (strstr(p, "jaguar")) return "jaguar"; + if (strstr(p, "junkers")) return "junkers"; + if (strstr(p, "kawasaki")) return "kawasaki"; + if (strstr(p, "de havilland")) return "de-havilland"; + if (strstr(p, "de-havilland")) return "de-havilland"; + if (strstr(p, "diamond")) return "diamond"; + if (strstr(p, "bell")) return "bell"; + if (strstr(p, "hughes")) return "hughes"; + if (strstr(p, "kamov")) return "kamov"; + if (strstr(p, "mil")) return "mil"; + if (strstr(p, "eurocopter")) return "eurocopter"; + if (strstr(p, "alouette")) return "alouette"; + if (strstr(p, "aerospatiale")) return "aerospatiale"; + if (strstr(p, "sikorsky")) return "sikorsky"; + if (strstr(p, "bernard")) return "bernard"; + if (strstr(p, "bleriot")) return "bleriot"; + if (strstr(p, "bristol")) return "bristol"; + if (strstr(p, "breguet")) return "breguet"; + if (strstr(p, "wright")) return "wright"; + if (strstr(p, "breda")) return "breda"; + if (strstr(p, "rutan")) return "rutan"; + if (strstr(p, "vought")) return "vought"; + if (strstr(p, "fiat")) return "fiat"; + if (strstr(p, "focke wulf")) return "focke-wulf"; + if (strstr(p, "focke-wulf")) return "focke-wulf"; + if (strstr(p, "gloster")) return "gloster"; + if (strstr(p, "hawker")) return "hawker"; + if (strstr(p, "heinkel")) return "heinkel"; + if (strstr(p, "messerschmitt")) return "messerschmitt"; + if (strstr(p, "north american")) return "north-american"; + if (strstr(p, "north-american")) return "north-american"; + if (strstr(p, "piaggio")) return "piaggio"; + if (strstr(p, "pilatus")) return "pilatus"; + if (strstr(p, "supermarine")) return "supermarine"; + if (strstr(p, "beechcraft")) return "beechcraft"; + if (strstr(p, "beech")) return "beechcraft"; + if (strstr(p, "vickers")) return "vickers"; + if (strstr(p, "westland")) return "westland"; + if (strstr(p, "yakovlev")) return "yakovlev"; + if (strstr(p, "schweizer")) return "schweizer"; + + /* educated guess */ + if (strstr(p, "b7")) return "boeing"; + if (strstr(p, "airbus")) return "airbus"; + if (strstr(p, "an-")) return "antonov"; + if (strstr(p, "tu-")) return "tupolev"; + if (strstr(p, "il-")) return "ilyoushin"; + if (strstr(p, "su-")) return "sukoi"; + if (strstr(p, "dc-")) return "douglas"; + if (strstr(p, "md-")) return "mc-donnell-douglas"; + if (strstr(p, "ju-")) return "junkers"; + if (strstr(p, "ec-")) return "eurocopter"; + if (strstr(p, "he-")) return "heinkel"; + if (strstr(p, "as-")) return "aerospatiale"; + if (strstr(p, "me-")) return "messerschmitt"; + if (strstr(p, "fw-")) return "focke-wulf"; + if (strstr(p, "yak-")) return "yakovlev"; + if (strstr(p, "sgs-")) return "schweizer"; + if (strstr(p, "ask-")) return "schleicher"; + if (strstr(p, "mirage")) return "dassault"; + + return NULL; +} + /* -- JSBSim ---------------------------------------------------------------- */ const char* jsb_wing_tag(void *xid, void *path) @@ -554,6 +656,7 @@ update_metadata_jsb(char *sfname, char *path, char *aero, char *desc) { sprintf(s, " \n"); PRINT("auto-generated"); + PRINT(vendor_tag(desc ? desc : aero)); PRINT(strlwr(desc ? desc : aero)); PRINT(jsb_wing_tag(xid, path)); PRINT(jsb_gear_tag(xid)); @@ -565,7 +668,11 @@ update_metadata_jsb(char *sfname, char *path, char *aero, char *desc) PRINT(jsb_thruster_tag(xid, path)); s = strncat(s, " ", TS-strlen(s)); - updateFile(sfname, s); + if (print_tags) { + printf( "%s\n", s); + } else { + updateFile(sfname, s); + } free(s); } xmlClose(xid); @@ -851,6 +958,7 @@ update_metadata_yasim(char *sfname, char *path, char *aero, char *desc) { sprintf(s, " \n"); PRINT("auto-generated"); + PRINT(vendor_tag(desc ? desc : aero)); PRINT(strlwr(desc ? desc : aero)); PRINT(yasim_wing_tag(xid)); PRINT(yasim_gear_tag(xid)); @@ -862,7 +970,11 @@ update_metadata_yasim(char *sfname, char *path, char *aero, char *desc) PRINT(yasim_thruster_tag(xid, path)); s = strncat(s, " ", TS-strlen(s)); - updateFile(sfname, s); + if (print_tags) { + printf( "%s\n", s); + } else { + updateFile(sfname, s); + } free(s); } xmlClose(xid); @@ -942,6 +1054,11 @@ main(int argc, char **argv) show_help(); } + if (getCommandLineOption(argc, argv, "-p") || + getCommandLineOption(argc, argv, "--print")) { + print_tags = 1; + } + setFile = getCommandLineOption(argc, argv, "-i"); if (!setFile) { setFile = getCommandLineOption(argc, argv, "-input");