119 lines
2.5 KiB
C
119 lines
2.5 KiB
C
/* small utility functions for winebuild */
|
|
|
|
#include <ctype.h>
|
|
#include <stdarg.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
#include "build.h"
|
|
|
|
void *xmalloc (size_t size)
|
|
{
|
|
void *res;
|
|
|
|
res = malloc (size ? size : 1);
|
|
if (res == NULL)
|
|
{
|
|
fprintf (stderr, "Virtual memory exhausted.\n");
|
|
exit (1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
void *xrealloc (void *ptr, size_t size)
|
|
{
|
|
void *res = realloc (ptr, size);
|
|
if (res == NULL)
|
|
{
|
|
fprintf (stderr, "Virtual memory exhausted.\n");
|
|
exit (1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
char *xstrdup( const char *str )
|
|
{
|
|
char *res = strdup( str );
|
|
if (!res)
|
|
{
|
|
fprintf (stderr, "Virtual memory exhausted.\n");
|
|
exit (1);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
char *strupper(char *s)
|
|
{
|
|
char *p;
|
|
for (p = s; *p; p++) *p = toupper(*p);
|
|
return s;
|
|
}
|
|
|
|
void fatal_error( const char *msg, ... )
|
|
{
|
|
va_list valist;
|
|
va_start( valist, msg );
|
|
if (input_file_name)
|
|
{
|
|
fprintf( stderr, "%s:", input_file_name );
|
|
if (current_line)
|
|
fprintf( stderr, "%d:", current_line );
|
|
fputc( ' ', stderr );
|
|
}
|
|
vfprintf( stderr, msg, valist );
|
|
va_end( valist );
|
|
exit(1);
|
|
}
|
|
|
|
void fatal_perror( const char *msg, ... )
|
|
{
|
|
va_list valist;
|
|
va_start( valist, msg );
|
|
if (input_file_name)
|
|
{
|
|
fprintf( stderr, "%s:", input_file_name );
|
|
if (current_line)
|
|
fprintf( stderr, "%d:", current_line );
|
|
fputc( ' ', stderr );
|
|
}
|
|
vfprintf( stderr, msg, valist );
|
|
perror( " " );
|
|
va_end( valist );
|
|
exit(1);
|
|
}
|
|
|
|
void warning( const char *msg, ... )
|
|
{
|
|
va_list valist;
|
|
va_start( valist, msg );
|
|
if (input_file_name)
|
|
{
|
|
fprintf( stderr, "%s:", input_file_name );
|
|
if (current_line)
|
|
fprintf( stderr, "%d:", current_line );
|
|
fputc( ' ', stderr );
|
|
}
|
|
fprintf( stderr, "warning: " );
|
|
vfprintf( stderr, msg, valist );
|
|
va_end( valist );
|
|
}
|
|
|
|
/* dump a byte stream into the assembly code */
|
|
void dump_bytes( FILE *outfile, const unsigned char *data, int len,
|
|
const char *label, int constant )
|
|
{
|
|
int i;
|
|
|
|
fprintf( outfile, "\nstatic %sunsigned char %s[%d] = {",
|
|
constant ? "const " : "", label, len );
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
if (!(i & 7)) fprintf( outfile, "\n " );
|
|
fprintf( outfile, "0x%02x", *data++ );
|
|
if (i < len - 1) fprintf( outfile, "," );
|
|
}
|
|
fprintf( outfile, "\n};\n" );
|
|
}
|