00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#include <qstring.h>
00024
#include <qfile.h>
00025
#include <qcstring.h>
00026
#include <stdlib.h>
00027
00028
void dcopidlParse(
const char *_code );
00029
00030
int idl_line_no;
00031
00032
#if YYDEBUG
00033
extern int yydebug;
00034
#endif
00035
00036
int main(
int argc,
char** argv )
00037 {
00038
if (argc != 2)
00039 {
00040 fprintf(stderr,
"Usage : dcopidl input_file\n");
00041
return -1;
00042 }
00043
QFile file( argv[1] );
00044
if ( !file.
open( IO_ReadOnly ) )
00045 {
00046 fprintf(stderr,
"Can't open input file\n");
00047
return -1;
00048 }
00049
00050
QByteArray arr = file.
readAll();
00051 uint len = arr.size();
00052 uint j = 1;
00053
for (uint i = 1; i<len; i++, j++) {
00054
if (arr[ i-1 ] ==
'\r' && ((i+1)==len || arr[ i ] !=
'\n')) {
00055
00056 arr[ j-1 ] =
'\n';
00057
if ((i+1)==len)
00058 j--;
00059 }
00060
else if (arr[ i-1 ] ==
'\r' && arr[ i ] ==
'\n') {
00061
00062 arr[ j-1 ] =
'\n';
00063 i++;
00064 }
00065
else if (i!=j) {
00066 arr[ j-1 ] = arr[ i-1 ];
00067 }
00068 }
00069 len = j;
00070 arr.resize( len + 1 );
00071 arr[ len ] = 0;
00072
00073
#if YYDEBUG
00074
char *debug = getenv(
"DEBUG");
00075
if (debug)
00076 yydebug = 1;
00077
#endif
00078
idl_line_no = 1;
00079
00080 printf(
"<!DOCTYPE DCOP-IDL><DCOP-IDL>\n");
00081 printf(
"<SOURCE>%s</SOURCE>\n", argv[1] );
00082 dcopidlParse( arr.data() );
00083 printf(
"</DCOP-IDL>\n");
00084
00085 file.
close();
00086
return 0;
00087 }