Groupies working hard! :D

This commit is contained in:
2021-09-15 16:46:38 +02:00
parent 7d9457eb24
commit cc9365965e
3 changed files with 33 additions and 26 deletions

View File

@ -8,12 +8,15 @@ enum FileType{ASCII, ISO, UTF, data};
bool is_utf8(FILE* f) {
rewind(f);
char byte;
unsigned char byte;
int char_length = -1;
for (;;) {
if (fread(&byte, 1, 1, f) == 0) {
break;
}
if (byte == 0){
return false;
}
for (int j = 0 ; j <= 8 ; j++) {
if (byte >> 7 == 0) {
char_length = j;
@ -40,7 +43,7 @@ bool is_iso8859(FILE* f) {
for (int i = 0 ; i < 7 ; i++) {
iso8859_CHARACTERS[i] = i+7;
}
iso8859_CHARACTERS[7] = 27;
iso8859_CHARACTERS[7] = 27;
for (int i = 0 ; i < 94 ; i++) {
iso8859_CHARACTERS[i+8] = i+32;
}
@ -48,23 +51,23 @@ bool is_iso8859(FILE* f) {
for (int i = 0 ; i < 95 ; i++) {
iso8859_CHARACTERS[i+102] = i+160;
}
char byte;
bool is_iso8859;
unsigned char byte;
bool iso_byte;
for (;;) {
if (fread(&byte, 1, 1, f) == 0) {
break;
}
is_iso8859 = false;
for (int i = 0 ; i < 95 ; i++) {
iso_byte = false;
for (int i = 0 ; i < 197 ; i++) {
if (byte == iso8859_CHARACTERS[i]) {
is_iso8859 = true;
iso_byte = true;
break;
}
}
if (! is_iso8859) {
if (! iso_byte) {
return false;
}
}
return true;
}
@ -81,7 +84,7 @@ bool is_ascii(FILE* f) {
ASCII_CHARACTERS[i+8] = i+32;
}
char byte;
unsigned char byte;
bool ascii_byte;
for (;;) {
if (fread(&byte, 1, 1, f) == 0) {
@ -97,10 +100,10 @@ bool is_ascii(FILE* f) {
if (! ascii_byte) {
return false;
}
}
return true;
}
int print_error(char* path, int errnum) {
@ -115,7 +118,7 @@ int main(int argc, char* argv[]) {
}
FILE* f = fopen(argv[1], "r");
if (f == NULL) {
print_error(argv[2], errno);
}
@ -126,9 +129,11 @@ int main(int argc, char* argv[]) {
fprintf(stdout, "%s: ASCII text\n", argv[1]);
} else if (is_iso8859(f)) {
fprintf(stdout, "%s: ISO-8859 text\n", argv[1]);
} else if (is_utf8(f)) {
fprintf(stdout, "%s: UTF-8 Unicode text\n", argv[1]);
} else {
fprintf(stdout, "%s: data\n", argv[1]);
}
}
fclose(f);
return EXIT_SUCCESS;