1ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho/* 2ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho******************************************************************************* 3ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* 4ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* Copyright (C) 2003, International Business Machines 5ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* Corporation and others. All Rights Reserved. 6ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* 7ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho******************************************************************************* 8ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* file name: ucdstrip.c 9ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* encoding: US-ASCII 10ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* tab size: 8 (not used) 11ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* indentation:4 12ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* 13ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* created on: 2003feb20 14ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* created by: Markus W. Scherer 15ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* 16ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* Simple tool for Unicode Character Database files with semicolon-delimited fields. 17ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* Removes comments behind data lines but not in others. 18ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* 19ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* To compile, just call a C compiler/linker with this source file. 20ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho* On Windows: cl ucdstrip.c 21ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho*/ 22ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho 23ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho#include <stdio.h> 24ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho#include <string.h> 25ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho#include <stdlib.h> 26ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho 27ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho/* return the first character position after the end of the data */ 28ea1f1813c8b13a850b13f256aeb5152bb0942e81clairehostatic char * 29ea1f1813c8b13a850b13f256aeb5152bb0942e81clairehoendOfData(const char *l) { 30ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho char *end; 31ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho char c; 32ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho 33ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho end=strchr(l, '#'); 34ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho if(end!=NULL) { 35ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho /* ignore whitespace before the comment */ 36ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho while(l!=end && ((c=*(end-1))==' ' || c=='\t')) { 37ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho --end; 38ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho } 39ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho } else { 40ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho end=strchr(l, 0); 41ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho } 42ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho return end; 43ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho} 44ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho 45ea1f1813c8b13a850b13f256aeb5152bb0942e81clairehoextern int 46ea1f1813c8b13a850b13f256aeb5152bb0942e81clairehomain(int argc, const char *argv[]) { 47ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho static char line[2000]; 48ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho char *end; 49ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho 50ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho while(gets(line)!=NULL) { 51ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho if(strtol(line, &end, 16)>=0 && end!=line) { 52ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho /* code point or range followed by semicolon and data, remove comment */ 53ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho *endOfData(line)=0; 54ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho } 55ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho puts(line); 56ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho } 57ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho 58ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho return 0; 59ea1f1813c8b13a850b13f256aeb5152bb0942e81claireho} 60