/* Asterisk INI to Property List File Conversion Utility -- Version 1.10 * * symdump.c * aini2plist * * Clear text printing of a symbol stream * * (C) 2006 Sunrise Telephone Systems Ltd. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * * In countries and territories where the above no-warranty disclaimer is * not permissible by applicable law, the following terms apply: * * NO PERMISSION TO USE THE SOFTWARE IS GRANTED AND THE SOFTWARE MUST NOT BE * USED AT ALL IN SUCH COUNTRIES AND TERRITORIES WHERE THE ABOVE NO-WARRANTY * DISCLAIMER IS NOT PERMISSIBLE AND INVALIDATED BY APPLICABLE LAW. HOWEVER, * THE COPYRIGHT HOLDERS HEREBY WAIVE THEIR RIGHT TO PURSUE OFFENDERS AS LONG * AS THEY OTHERWISE ABIDE BY THE TERMS OF THE LICENSE AS APPLICABLE FOR USE * OF THE SOFTWARE IN COUNTRIES AND TERRITORIES WHERE THE ABOVE NO-WARRANTY * DISCLAIMER IS PERMITTED BY APPLICABLE LAW. THIS WAIVER DOES NOT CONSTITUTE * A LICENSE TO USE THE SOFTWARE IN COUNTRIES AND TERRITORIES WHERE THE ABOVE * NO-WARRANTY DISCLAIMER IS NOT PERMISSIBLE AND INVALIDATED BY APPLICABLE * LAW. ANY LIABILITY OF ANY KIND IS CATEGORICALLY RULED OUT AT ALL TIMES. */ #include #include #include "globaldefs.h" #include "symdump.h" #include "scanner.h" // --------------------------------------------------------------------------- // Separator line // --------------------------------------------------------------------------- static const char separator[] = \ "-----------------------------------------------------------\n"; // --------------------------------------------------------------------------- // private function: dump_sym(sym, row, line, str) // --------------------------------------------------------------------------- // // Prints the details of a single symbol to stdout. static void dump_sym(const ScannerToken sym, const CARDINAL row, const CARDINAL line, const char *str) { CARDINAL len = strlen(str); printf("Symbol: %s, line: %i, row: %i\n", token_name(sym), line, row); if (len == 1) { if (str[0] == 10) { printf("'\\n'\n"); } else { printf("'%s'\n", str); } // end if } else { printf("\"%s\"\n", str); } // end if printf(separator); } // end dump_sym // --------------------------------------------------------------------------- // function: dump_file(infile) // --------------------------------------------------------------------------- // // Prints all symbols found in source file 'infile' to stdout. // // Returns 1 on success, 0 on failure. int dump_file(const char *infile) { ScannerToken sym; ScannerPosition pos; const char *str; init_scanner(infile); // if scanner could not be initialised, exit if (scanner_initialized() == false) { return 0; } // end if // print first symbol sym = getsym(); pos = getpos(); str = getlex(); printf(separator); dump_sym(sym, pos.row, pos.line, str); // print remaining symbols while (sym != EOF_MARK) { sym = getsym(); pos = getpos(); str = getlex(); dump_sym(sym, pos.row, pos.line, str); } // end while reset_scanner(); return 1; } // end dump_file // END OF FILE