60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
|
/*
|
||
|
*******************************************************************************
|
||
|
*
|
||
|
* Copyright (C) 2003, International Business Machines
|
||
|
* Corporation and others. All Rights Reserved.
|
||
|
*
|
||
|
*******************************************************************************
|
||
|
* file name: ucdstrip.c
|
||
|
* encoding: US-ASCII
|
||
|
* tab size: 8 (not used)
|
||
|
* indentation:4
|
||
|
*
|
||
|
* created on: 2003feb20
|
||
|
* created by: Markus W. Scherer
|
||
|
*
|
||
|
* Simple tool for Unicode Character Database files with semicolon-delimited fields.
|
||
|
* Removes comments behind data lines but not in others.
|
||
|
*
|
||
|
* To compile, just call a C compiler/linker with this source file.
|
||
|
* On Windows: cl ucdstrip.c
|
||
|
*/
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
/* return the first character position after the end of the data */
|
||
|
static char *
|
||
|
endOfData(const char *l) {
|
||
|
char *end;
|
||
|
char c;
|
||
|
|
||
|
end=strchr(l, '#');
|
||
|
if(end!=NULL) {
|
||
|
/* ignore whitespace before the comment */
|
||
|
while(l!=end && ((c=*(end-1))==' ' || c=='\t')) {
|
||
|
--end;
|
||
|
}
|
||
|
} else {
|
||
|
end=strchr(l, 0);
|
||
|
}
|
||
|
return end;
|
||
|
}
|
||
|
|
||
|
extern int
|
||
|
main(int argc, const char *argv[]) {
|
||
|
static char line[2000];
|
||
|
char *end;
|
||
|
|
||
|
while(gets(line)!=NULL) {
|
||
|
if(strtol(line, &end, 16)>=0 && end!=line) {
|
||
|
/* code point or range followed by semicolon and data, remove comment */
|
||
|
*endOfData(line)=0;
|
||
|
}
|
||
|
puts(line);
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|