Code: Select all
/******************************************************************************
* This is infread.c
* written by swiny
*****************************************************************************/
#include <stdio.h>
#include <errno.h>
#include <wchar.h>
#include <stdlib.h>
#include <locale.h>
#define MAX_BUFFER 7464
int readucs2wchars(FILE *f,wchar_t *buffer, size_t buffsize) {
wchar_t value = 1;
size_t pos = 0;
buffsize--;
while ( (value != 0x0000) && (!feof( f )) && (pos < buffsize) ) {
value = ((unsigned int)fgetc(f) << 8) | fgetc(f);
buffer[pos++] = value;
}
buffer[buffsize]=0;
}
int main( int argc, const char **argv ) {
FILE *src;
int n, retval;
wchar_t buffer[MAX_BUFFER+1];
setlocale(LC_ALL,"");
if ( argc == 1 ) {
printf( "Usage: %s <inf-file> ...\n", argv[0] );
return 0;
} else {
for ( retval = 0, n = 1; n < argc; n++ ) {
src = fopen( argv[n], "rb" );
if ( src ) {
wprintf( L"%s:\n", argv[n] );
readucs2wchars( src, buffer, 0x100 );
wprintf(L" %ls: ",buffer);
if ( fseek( src, 0x100, SEEK_SET ) ) {
perror( argv[n] );
retval++;
} else {
readucs2wchars( src, buffer, 0x100 );
wprintf(L"%ls\n", buffer );
if ( fseek( src, 0x6f6, SEEK_SET ) ) {
perror( argv[n] );
retval++;
} else {
readucs2wchars( src, buffer, 0x1000 );
wprintf(L" %ls\n\n", buffer );
}
}
} else {
perror( argv[n] );
retval++;
}
fclose( src );
}
}
return retval;
}Code: Select all
gcc infread.c -o infread