int main(int argc, char *argv[]) { char buffer, *char_data, out_data[6], string_name[100], *dot_ptr, *string_ptr; FILE *infile, *outfile; long byte_data, data; int byte_count, i, index; #if (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) int j; #endif /* (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) */ if(argc != 3 && argc != 4) { printf("Usage: uid2uidh infile outfile [string_prefix_name]\n"); } else { index = 1; if(infile = fopen( argv[index], "r")) { index++; if(outfile = fopen( argv[index], "w")) { index++; byte_count = 0; data = 0; if (argc == 4) { string_ptr = argv[3]; } else { strcpy(string_name, argv[1]); i=strlen(string_name); while ((i>0)&&(' '==string_name[i-1])) { i--; } while ((i>0)&&('/'==string_name[i-1])) { i--; } string_name[i]='\0'; while ((i>0)&&('/'!=string_name[i-1])) { i--; } string_ptr = string_name+i; if(dot_ptr = strchr(string_ptr, '.')) { *dot_ptr = 0; } } fprintf(outfile, "static char %s_uidh[] = \"", string_ptr); while(!feof(infile)) { if(1 == fread(&buffer, sizeof(char), 1, infile)) { #if defined (DEBUG_CODE) printf("%d\n", buffer); #endif /* defined (DEBUG_CODE) */ byte_data = buffer & 255; data += byte_data << (8 * byte_count); if(byte_count == 3) { if(!data) { out_data[0] = '.'; out_data[1] = '.'; out_data[2] = '.'; out_data[3] = '.'; out_data[4] = '.'; out_data[5] = '.'; } else { char_data = l64a(data); #if defined (DEBUG_CODE) printf("%c%c%c%c%c%c\n", char_data[0], char_data[1], char_data[2], char_data[3], char_data[4], char_data[5]); #endif /* defined (DEBUG_CODE) */ #if (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) if (!glibc_version_greater_than_2_2_4()) { for(i = 0 ; i < 6 ; i++) { if(char_data[i]) { out_data[5 - i] = char_data[i]; } else { for (j = 0 ; j < i ; j++) { out_data[j] = out_data[6 - i + j]; } for ( ; i < 6 ; i++) { out_data[i] = '.'; } } } } else { #endif /* (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) */ for( i = 0 ; i < 6 ; i++) { if(char_data[i]) { out_data[i] = char_data[i]; } else { for ( ; i < 6 ; i++) { out_data[i] = '.'; } } } #if (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) } #endif /* (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) */ } fwrite(out_data, sizeof(char), 6, outfile); #if defined (DEBUG_CODE) printf("%c%c%c%c%c%c\n", out_data[0], out_data[1], out_data[2], out_data[3], out_data[4], out_data[5]); #endif /* defined (DEBUG_CODE) */ data = 0; byte_count = 0; } else { byte_count++; } } } fprintf(outfile, "\";\n"); fclose (outfile); } else { fprintf(stderr,"uid2uidh. Unable to open output file %s\n", argv[index]); } fclose (infile); } else { fprintf(stderr,"uid2uidh. Unable to open input file %s\n", argv[index]); } } return(0); }
static size_t write_base64_data(FILE *outfile, int byte_count, long data) /******************************************************************************* LAST MODIFIED : 20 June 2003 DESCRIPTION : ==============================================================================*/ { char *char_data, bytes_out, out_data[6]; size_t bytes_written, i; #if (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) int j; #endif /* (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) */ switch(byte_count) { case 1: { bytes_out = 2; } break; case 2: { bytes_out = 3; } break; case 3: { bytes_out = 5; } break; case 4: { bytes_out = 6; } break; default: { printf("write_base64_data: Unsupported byte_count %d\n", byte_count); exit(1); } break; } if(!data) { for (i = 0 ; i < bytes_out ; i++) { out_data[i] = '.'; } } else { char_data = l64a(data); #if defined (CMISS_DEBUG) printf("'%c%c%c%c%c%c'\n", char_data[0], char_data[1], char_data[2], char_data[3], char_data[4], char_data[5]); #endif /* defined (CMISS_DEBUG) */ #if (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) if (!glibc_version_greater_than_2_2_4()) { for(i = 0 ; i < bytes_out ; i++) { if(char_data[i]) { out_data[bytes_out - 1 - i] = char_data[i]; } else { for (j = 0 ; j < i ; j++) { out_data[j] = out_data[bytes_out - i + j]; } for ( ; i < bytes_out ; i++) { out_data[i] = '.'; } } } } else { #endif /* (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) */ for( i = 0 ; i < bytes_out ; i++) { if(char_data[i]) { out_data[i] = char_data[i]; } else { for ( ; i < bytes_out ; i++) { out_data[i] = '.'; } } } #if (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) } #endif /* (defined (BYTE_ORDER)) && (1234==BYTE_ORDER) */ } bytes_written = fwrite(out_data, sizeof(char), bytes_out, outfile); #if defined (CMISS_DEBUG) printf("'%c%c%c%c%c%c'\n", out_data[0], out_data[1], out_data[2], out_data[3], out_data[4], out_data[5]); #endif /* defined (CMISS_DEBUG) */ return (bytes_written); }