ReactOS  0.4.14-dev-608-gd495a4f
utils.c File Reference
#include "config.h"
#include "wine/port.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <ctype.h>
#include "widl.h"
#include "utils.h"
#include "parser.h"
Include dependency graph for utils.c:

Go to the source code of this file.

Classes

struct  resource
 

Macros

#define CURRENT_LOCATION   { input_name ? input_name : "stdin", line_number, parser_text }
 

Functions

static void make_print (char *str)
 
static void generic_msg (const loc_info_t *loc_info, const char *s, const char *t, va_list ap)
 
void error_loc (const char *s,...)
 
void parser_error (const char *s)
 
void error_loc_info (const loc_info_t *loc_info, const char *s,...)
 
int parser_warning (const char *s,...)
 
void error (const char *s,...)
 
void warning (const char *s,...)
 
void warning_loc_info (const loc_info_t *loc_info, const char *s,...)
 
void chat (const char *s,...)
 
chardup_basename (const char *name, const char *ext)
 
size_t widl_getline (char **linep, size_t *lenp, FILE *fp)
 
voidxmalloc (size_t size)
 
voidxrealloc (void *p, size_t size)
 
charxstrdup (const char *str)
 
int strendswith (const char *str, const char *end)
 
static void check_output_buffer_space (size_t size)
 
void init_output_buffer (void)
 
void flush_output_buffer (const char *name)
 
static void put_resource_id (const char *str)
 
void add_output_to_resources (const char *type, const char *name)
 
void flush_output_resources (const char *name)
 
void put_data (const void *data, size_t size)
 
void put_byte (unsigned char val)
 
void put_word (unsigned short val)
 
void put_dword (unsigned int val)
 
void put_qword (unsigned int val)
 
void put_pword (unsigned int val)
 
void put_str (int indent, const char *format,...)
 
void align_output (unsigned int align)
 

Variables

static const int want_near_indication = 0
 
int byte_swapped = 0
 
unsigned charoutput_buffer
 
size_t output_buffer_pos
 
size_t output_buffer_size
 
static struct resource resources [16]
 
static unsigned int nb_resources
 

Macro Definition Documentation

◆ CURRENT_LOCATION

#define CURRENT_LOCATION   { input_name ? input_name : "stdin", line_number, parser_text }

Definition at line 36 of file utils.c.

Function Documentation

◆ add_output_to_resources()

void add_output_to_resources ( const char type,
const char name 
)

Definition at line 307 of file utils.c.

308 {
309  size_t data_size = output_buffer_pos;
310  size_t header_size = 5 * sizeof(unsigned int) + 2 * sizeof(unsigned short);
311 
312  assert( nb_resources < sizeof(resources)/sizeof(resources[0]) );
313 
314  if (type[0] != '#') header_size += (strlen( type ) + 1) * sizeof(unsigned short);
315  else header_size += 2 * sizeof(unsigned short);
316  if (name[0] != '#') header_size += (strlen( name ) + 1) * sizeof(unsigned short);
317  else header_size += 2 * sizeof(unsigned short);
318 
319  header_size = (header_size + 3) & ~3;
320  align_output( 4 );
321  check_output_buffer_space( header_size );
322  resources[nb_resources].size = header_size + output_buffer_pos;
324 
325  output_buffer_pos = 0;
326  put_dword( data_size ); /* ResSize */
327  put_dword( header_size ); /* HeaderSize */
328  put_resource_id( type ); /* ResType */
329  put_resource_id( name ); /* ResName */
330  align_output( 4 );
331  put_dword( 0 ); /* DataVersion */
332  put_word( 0 ); /* Memory options */
333  put_word( 0 ); /* Language */
334  put_dword( 0 ); /* Version */
335  put_dword( 0 ); /* Characteristics */
336 
339 }
#define memmove(s1, s2, n)
Definition: mkisofs.h:881
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define assert(x)
Definition: debug.h:53
void init_output_buffer(void)
Definition: utils.c:272
void put_dword(unsigned int val)
Definition: utils.c:395
void put_word(unsigned short val)
Definition: utils.c:389
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
Definition: typeof.h:94
static struct resource resources[16]
static void put_resource_id(const char *str)
Definition: utils.c:289
void align_output(unsigned int align)
Definition: utils.c:449
static void check_output_buffer_space(size_t size)
Definition: utils.c:263
static unsigned int nb_resources
Definition: utils.c:261
size_t output_buffer_pos
Definition: utils.c:253
Definition: name.c:38
unsigned char * output_buffer
Definition: utils.c:252
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

Referenced by output_typelib_regscript(), save_all_changes(), and write_regscript().

◆ align_output()

void align_output ( unsigned int  align)

Definition at line 449 of file utils.c.

450 {
451  size_t size = align - (output_buffer_pos % align);
452 
453  if (size == align) return;
457 }
int align(int length, int align)
Definition: dsound8.c:36
GLsizeiptr size
Definition: glext.h:5919
static void check_output_buffer_space(size_t size)
Definition: utils.c:263
size_t output_buffer_pos
Definition: utils.c:253
#define memset(x, y, z)
Definition: compat.h:39

Referenced by add_output_to_resources().

◆ chat()

void chat ( const char s,
  ... 
)

Definition at line 131 of file utils.c.

132 {
134  {
135  va_list ap;
136  va_start(ap, s);
137  fprintf(stderr, "chat: ");
138  vfprintf(stderr, s, ap);
139  va_end(ap);
140  }
141 }
int debuglevel
Definition: widl.c:110
#define va_end(ap)
Definition: acmsvcex.h:90
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
char * va_list
Definition: acmsvcex.h:78
#define DEBUGLEVEL_CHAT
Definition: widl.h:30
GLdouble s
Definition: gl.h:2039
#define va_start(ap, A)
Definition: acmsvcex.h:91
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
FILE * stderr
_Check_return_opt_ _CRTIMP int __cdecl vfprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)

Referenced by add_block(), add_func_desc(), add_importlib(), add_index(), add_interface_typeinfo(), add_name(), add_structure_typeinfo(), add_type_typeinfo(), add_var_desc(), alloc_importinfo(), create_msft_typeinfo(), ctl2_alloc_guid(), dump_type(), dump_var_desc(), encode_type(), encode_var(), find_importinfo(), get_param_flags(), get_type_vt(), local_href(), main(), save_all_changes(), sltg_add_typeinfo(), sltg_write_header(), sltg_write_helpstrings(), sltg_write_nametable(), sltg_write_typeinfo(), write_default_value(), and write_var_desc().

◆ check_output_buffer_space()

static void check_output_buffer_space ( size_t  size)
static

Definition at line 263 of file utils.c.

264 {
266  {
269  }
270 }
#define max(a, b)
Definition: svc.c:63
size_t output_buffer_size
Definition: utils.c:254
void * xrealloc(void *p, size_t size)
Definition: utils.c:216
GLsizeiptr size
Definition: glext.h:5919
size_t output_buffer_pos
Definition: utils.c:253

Referenced by add_output_to_resources(), align_output(), put_byte(), put_data(), and put_str().

◆ dup_basename()

char* dup_basename ( const char name,
const char ext 
)

Definition at line 143 of file utils.c.

144 {
145  int namelen;
146  int extlen = strlen(ext);
147  char *base;
148  char *slash;
149 
150  if(!name)
151  name = "widl.tab";
152 
153  slash = strrchr(name, '/');
154  if (!slash)
155  slash = strrchr(name, '\\');
156 
157  if (slash)
158  name = slash + 1;
159 
160  namelen = strlen(name);
161 
162  /* +6 for later extension (strlen("_r.rgs")) and +1 for '\0' */
163  base = xmalloc(namelen +6 +1);
164  strcpy(base, name);
165  if(!strcasecmp(name + namelen-extlen, ext))
166  {
167  base[namelen - extlen] = '\0';
168  }
169  return base;
170 }
#define strcasecmp
Definition: fake.h:9
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
GLint namelen
Definition: glext.h:7232
GLuint base
Definition: 3dtext.c:35
char ext[3]
Definition: mkdosfs.c:358
void * xmalloc(size_t size)
Definition: utils.c:201
Definition: name.c:38
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388

Referenced by add_filename_node(), dup_basename_token(), gen_name(), main(), and write_import().

◆ error()

void error ( const char s,
  ... 
)

Definition at line 104 of file utils.c.

105 {
106  va_list ap;
107  va_start(ap, s);
108  fprintf(stderr, "error: ");
109  vfprintf(stderr, s, ap);
110  va_end(ap);
111  exit(2);
112 }
#define va_end(ap)
Definition: acmsvcex.h:90
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
char * va_list
Definition: acmsvcex.h:78
GLdouble s
Definition: gl.h:2039
#define va_start(ap, A)
Definition: acmsvcex.h:91
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
FILE * stderr
void exit(int exitcode)
Definition: _exit.c:33
_Check_return_opt_ _CRTIMP int __cdecl vfprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)

Referenced by debug_glerror(), flush_output_buffer(), flush_output_resources(), xmalloc(), and xrealloc().

◆ error_loc()

void error_loc ( const char s,
  ... 
)

Definition at line 69 of file utils.c.

70 {
71  loc_info_t cur_loc = CURRENT_LOCATION;
72  va_list ap;
73  va_start(ap, s);
74  generic_msg(&cur_loc, s, "error", ap);
75  va_end(ap);
76  exit(1);
77 }
#define va_end(ap)
Definition: acmsvcex.h:90
char * va_list
Definition: acmsvcex.h:78
GLdouble s
Definition: gl.h:2039
#define va_start(ap, A)
Definition: acmsvcex.h:91
static void generic_msg(const loc_info_t *loc_info, const char *s, const char *t, va_list ap)
Definition: utils.c:50
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
void exit(int exitcode)
Definition: _exit.c:33
#define CURRENT_LOCATION
Definition: utils.c:36

Referenced by check_arg_attrs(), check_async_uuid(), check_coclass_attrs(), check_def(), check_dispiface_attrs(), check_enum_attrs(), check_field_attrs(), check_function_attrs(), check_iface_attrs(), check_library_attrs(), check_module_attrs(), check_statements(), check_struct_attrs(), check_typedef_attrs(), check_union_attrs(), declare_var(), do_import(), find_const(), find_type_or_error(), get_struct_fc(), make_decl_spec(), make_expr2(), make_exprs(), make_exprt(), make_statement_declaration(), parser_error(), reg_const(), reg_type(), reg_typedefs(), switch_to_acf(), type_dispinterface_define(), type_dispinterface_define_from_iface(), type_module_define(), type_new_bitfield(), type_new_coclass(), type_new_function(), type_new_module(), while(), write_locals(), xstrtoul(), and yyparse().

◆ error_loc_info()

void error_loc_info ( const loc_info_t loc_info,
const char s,
  ... 
)

Definition at line 85 of file utils.c.

86 {
87  va_list ap;
88  va_start(ap, s);
89  generic_msg(loc_info, s, "error", ap);
90  va_end(ap);
91  exit(1);
92 }
#define va_end(ap)
Definition: acmsvcex.h:90
char * va_list
Definition: acmsvcex.h:78
GLdouble s
Definition: gl.h:2039
#define va_start(ap, A)
Definition: acmsvcex.h:91
static void generic_msg(const loc_info_t *loc_info, const char *s, const char *t, va_list ap)
Definition: utils.c:50
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
void exit(int exitcode)
Definition: _exit.c:33

Referenced by check_arithmetic_type(), check_conformance_expr_list(), check_field_common(), check_integer_type(), check_remoting_args(), check_remoting_fields(), check_scalar_type(), and resolve_expression().

◆ flush_output_buffer()

void flush_output_buffer ( const char name)

Definition at line 279 of file utils.c.

280 {
281  int fd = open( name, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0666 );
282  if (fd == -1) error( "Error creating %s\n", name );
284  error( "Error writing to %s\n", name );
285  close( fd );
286  free( output_buffer );
287 }
#define open
Definition: acwin.h:95
#define free
Definition: debug_ros.c:5
static int fd
Definition: io.c:51
#define write
Definition: acwin.h:97
#define O_WRONLY
Definition: acwin.h:111
void error(const char *s,...)
Definition: utils.c:104
#define O_TRUNC
Definition: acwin.h:112
#define close
Definition: acwin.h:98
#define O_BINARY
Definition: acwin.h:109
size_t output_buffer_pos
Definition: utils.c:253
Definition: name.c:38
#define O_CREAT
Definition: acwin.h:110

◆ flush_output_resources()

void flush_output_resources ( const char name)

Definition at line 341 of file utils.c.

342 {
343  int fd;
344  unsigned int i;
345 
346  /* all output must have been saved with add_output_to_resources() first */
348 
349  put_dword( 0 ); /* ResSize */
350  put_dword( 32 ); /* HeaderSize */
351  put_word( 0xffff ); /* ResType */
352  put_word( 0x0000 );
353  put_word( 0xffff ); /* ResName */
354  put_word( 0x0000 );
355  put_dword( 0 ); /* DataVersion */
356  put_word( 0 ); /* Memory options */
357  put_word( 0 ); /* Language */
358  put_dword( 0 ); /* Version */
359  put_dword( 0 ); /* Characteristics */
360 
361  fd = open( name, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0666 );
362  if (fd == -1) error( "Error creating %s\n", name );
364  error( "Error writing to %s\n", name );
365  for (i = 0; i < nb_resources; i++)
366  {
367  if (write( fd, resources[i].data, resources[i].size ) != resources[i].size)
368  error( "Error writing to %s\n", name );
369  free( resources[i].data );
370  }
371  close( fd );
372  nb_resources = 0;
373  free( output_buffer );
374 }
#define open
Definition: acwin.h:95
#define free
Definition: debug_ros.c:5
#define assert(x)
Definition: debug.h:53
static int fd
Definition: io.c:51
void put_dword(unsigned int val)
Definition: utils.c:395
void put_word(unsigned short val)
Definition: utils.c:389
#define write
Definition: acwin.h:97
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define O_WRONLY
Definition: acwin.h:111
static struct resource resources[16]
GLsizeiptr size
Definition: glext.h:5919
void error(const char *s,...)
Definition: utils.c:104
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define O_TRUNC
Definition: acwin.h:112
#define close
Definition: acwin.h:98
#define O_BINARY
Definition: acwin.h:109
static unsigned int nb_resources
Definition: utils.c:261
size_t output_buffer_pos
Definition: utils.c:253
Definition: name.c:38
#define O_CREAT
Definition: acwin.h:110

Referenced by save_all_changes(), write_regscript(), and write_typelib_regscript().

◆ generic_msg()

static void generic_msg ( const loc_info_t loc_info,
const char s,
const char t,
va_list  ap 
)
static

Definition at line 50 of file utils.c.

51 {
52  fprintf(stderr, "%s:%d: %s: ", loc_info->input_name, loc_info->line_number, t);
53  vfprintf(stderr, s, ap);
54 
56  {
57  char *cpy;
58  if(loc_info->near_text)
59  {
60  cpy = xstrdup(loc_info->near_text);
61  make_print(cpy);
62  fprintf(stderr, " near '%s'", cpy);
63  free(cpy);
64  }
65  }
66 }
const char * near_text
Definition: widltypes.h:287
#define free
Definition: debug_ros.c:5
GLdouble GLdouble t
Definition: gl.h:2047
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
GLdouble s
Definition: gl.h:2039
const char * input_name
Definition: widltypes.h:285
int line_number
Definition: widltypes.h:286
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
FILE * stderr
char * xstrdup(const char *str)
Definition: utils.c:229
static const int want_near_indication
Definition: utils.c:38
_Check_return_opt_ _CRTIMP int __cdecl vfprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)
static void make_print(char *str)
Definition: utils.c:40

Referenced by error_loc(), error_loc_info(), parser_warning(), and warning_loc_info().

◆ init_output_buffer()

void init_output_buffer ( void  )

Definition at line 272 of file utils.c.

273 {
274  output_buffer_size = 1024;
275  output_buffer_pos = 0;
277 }
size_t output_buffer_size
Definition: utils.c:254
void * xmalloc(size_t size)
Definition: utils.c:201
size_t output_buffer_pos
Definition: utils.c:253

Referenced by add_output_to_resources().

◆ make_print()

static void make_print ( char str)
static

Definition at line 40 of file utils.c.

41 {
42  while(*str)
43  {
44  if(!isprint(*str))
45  *str = ' ';
46  str++;
47  }
48 }
const WCHAR * str
#define isprint(c)
Definition: acclib.h:73

Referenced by generic_msg().

◆ parser_error()

void parser_error ( const char s)

Definition at line 80 of file utils.c.

81 {
82  error_loc("%s\n", s);
83 }
void error_loc(const char *s,...)
Definition: utils.c:69
GLdouble s
Definition: gl.h:2039

◆ parser_warning()

int parser_warning ( const char s,
  ... 
)

Definition at line 94 of file utils.c.

95 {
96  loc_info_t cur_loc = CURRENT_LOCATION;
97  va_list ap;
98  va_start(ap, s);
99  generic_msg(&cur_loc, s, "warning", ap);
100  va_end(ap);
101  return 0;
102 }
#define va_end(ap)
Definition: acmsvcex.h:90
char * va_list
Definition: acmsvcex.h:78
GLdouble s
Definition: gl.h:2039
#define va_start(ap, A)
Definition: acmsvcex.h:91
static void generic_msg(const loc_info_t *loc_info, const char *s, const char *t, va_list ap)
Definition: utils.c:50
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
#define CURRENT_LOCATION
Definition: utils.c:36

Referenced by addcchar(), and append_attr().

◆ put_byte()

void put_byte ( unsigned char  val)

Definition at line 383 of file utils.c.

384 {
387 }
GLuint GLfloat * val
Definition: glext.h:7180
static void check_output_buffer_space(size_t size)
Definition: utils.c:263
size_t output_buffer_pos
Definition: utils.c:253

◆ put_data()

void put_data ( const void data,
size_t  size 
)

Definition at line 376 of file utils.c.

377 {
381 }
GLsizeiptr size
Definition: glext.h:5919
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static void check_output_buffer_space(size_t size)
Definition: utils.c:263
size_t output_buffer_pos
Definition: utils.c:253

Referenced by ctl2_write_segment(), ctl2_write_typeinfos(), put_dword(), put_word(), save_all_changes(), sltg_write_header(), sltg_write_helpstrings(), sltg_write_nametable(), sltg_write_remainder(), and sltg_write_typeinfo().

◆ put_dword()

void put_dword ( unsigned int  val)

Definition at line 395 of file utils.c.

396 {
397  if (byte_swapped)
398  val = ((val << 24) | ((val << 8) & 0x00ff0000) | ((val >> 8) & 0x0000ff00) | (val >> 24));
399  put_data( &val, sizeof(val) );
400 }
GLuint GLfloat * val
Definition: glext.h:7180
int byte_swapped
Definition: utils.c:251
void put_data(const void *data, size_t size)
Definition: utils.c:376

Referenced by add_output_to_resources(), flush_output_resources(), put_pword(), and put_qword().

◆ put_pword()

void put_pword ( unsigned int  val)

Definition at line 417 of file utils.c.

418 {
419  if (pointer_size == 8) put_qword( val );
420  else put_dword( val );
421 }
void put_qword(unsigned int val)
Definition: utils.c:402
void put_dword(unsigned int val)
Definition: utils.c:395
GLuint GLfloat * val
Definition: glext.h:7180
unsigned int pointer_size
Definition: widl.c:158

◆ put_qword()

void put_qword ( unsigned int  val)

Definition at line 402 of file utils.c.

403 {
404  if (byte_swapped)
405  {
406  put_dword( 0 );
407  put_dword( val );
408  }
409  else
410  {
411  put_dword( val );
412  put_dword( 0 );
413  }
414 }
void put_dword(unsigned int val)
Definition: utils.c:395
GLuint GLfloat * val
Definition: glext.h:7180
int byte_swapped
Definition: utils.c:251

Referenced by put_pword().

◆ put_resource_id()

static void put_resource_id ( const char str)
inlinestatic

Definition at line 289 of file utils.c.

290 {
291  if (str[0] != '#')
292  {
293  while (*str)
294  {
295  unsigned char ch = *str++;
296  put_word( toupper(ch) );
297  }
298  put_word( 0 );
299  }
300  else
301  {
302  put_word( 0xffff );
303  put_word( atoi( str + 1 ));
304  }
305 }
void put_word(unsigned short val)
Definition: utils.c:389
const WCHAR * str
int toupper(int c)
Definition: utclib.c:881
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)

Referenced by add_output_to_resources().

◆ put_str()

void put_str ( int  indent,
const char format,
  ... 
)

Definition at line 423 of file utils.c.

424 {
425  int n;
426  va_list args;
427 
430  output_buffer_pos += 4 * indent;
431 
432  for (;;)
433  {
435  va_start( args, format );
437  va_end( args );
438  if (n == -1) size *= 2;
439  else if ((size_t)n >= size) size = n + 1;
440  else
441  {
442  output_buffer_pos += n;
443  return;
444  }
446  }
447 }
#define vsnprintf
Definition: tif_win32.c:406
static const WCHAR indent[]
Definition: object.c:1156
size_t output_buffer_size
Definition: utils.c:254
GLdouble n
Definition: glext.h:7729
Definition: match.c:390
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
#define va_end(ap)
Definition: acmsvcex.h:90
char * va_list
Definition: acmsvcex.h:78
GLsizeiptr size
Definition: glext.h:5919
static void check_output_buffer_space(size_t size)
Definition: utils.c:263
#define va_start(ap, A)
Definition: acmsvcex.h:91
size_t output_buffer_pos
Definition: utils.c:253
#define memset(x, y, z)
Definition: compat.h:39
#define args
Definition: format.c:66

Referenced by output_typelib_regscript(), write_coclass(), write_interface(), write_progid(), write_regscript(), and write_typelib_interface().

◆ put_word()

void put_word ( unsigned short  val)

Definition at line 389 of file utils.c.

390 {
391  if (byte_swapped) val = (val << 8) | (val >> 8);
392  put_data( &val, sizeof(val) );
393 }
GLuint GLfloat * val
Definition: glext.h:7180
int byte_swapped
Definition: utils.c:251
void put_data(const void *data, size_t size)
Definition: utils.c:376

Referenced by add_output_to_resources(), flush_output_resources(), and put_resource_id().

◆ strendswith()

int strendswith ( const char str,
const char end 
)

Definition at line 238 of file utils.c.

239 {
240  int l = strlen(str);
241  int m = strlen(end);
242  return l >= m && strcmp(str + l - m, end) == 0;
243 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
GLuint GLuint end
Definition: gl.h:1545
const GLfloat * m
Definition: glext.h:10848
const WCHAR * str
r l[0]
Definition: byte_order.h:167
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469

Referenced by main(), save_all_changes(), write_regscript(), and write_typelib_regscript().

◆ warning()

void warning ( const char s,
  ... 
)

Definition at line 114 of file utils.c.

115 {
116  va_list ap;
117  va_start(ap, s);
118  fprintf(stderr, "warning: ");
119  vfprintf(stderr, s, ap);
120  va_end(ap);
121 }
#define va_end(ap)
Definition: acmsvcex.h:90
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
char * va_list
Definition: acmsvcex.h:78
GLdouble s
Definition: gl.h:2039
#define va_start(ap, A)
Definition: acmsvcex.h:91
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
FILE * stderr
_Check_return_opt_ _CRTIMP int __cdecl vfprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)

◆ warning_loc_info()

void warning_loc_info ( const loc_info_t loc_info,
const char s,
  ... 
)

Definition at line 123 of file utils.c.

124 {
125  va_list ap;
126  va_start(ap, s);
127  generic_msg(loc_info, s, "warning", ap);
128  va_end(ap);
129 }
#define va_end(ap)
Definition: acmsvcex.h:90
char * va_list
Definition: acmsvcex.h:78
GLdouble s
Definition: gl.h:2039
#define va_start(ap, A)
Definition: acmsvcex.h:91
static void generic_msg(const loc_info_t *loc_info, const char *s, const char *t, va_list ap)
Definition: utils.c:50
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32

Referenced by check_field_common(), and declare_var().

◆ widl_getline()

size_t widl_getline ( char **  linep,
size_t lenp,
FILE fp 
)

Definition at line 172 of file utils.c.

173 {
174  char *line = *linep;
175  size_t len = *lenp;
176  size_t n = 0;
177 
178  if (!line)
179  {
180  len = 64;
181  line = xmalloc(len);
182  }
183 
184  while (fgets(&line[n], len - n, fp))
185  {
186  n += strlen(&line[n]);
187  if (line[n - 1] == '\n')
188  break;
189  else if (n == len - 1)
190  {
191  len *= 2;
192  line = xrealloc(line, len);
193  }
194  }
195 
196  *linep = line;
197  *lenp = len;
198  return n;
199 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
void * xrealloc(void *p, size_t size)
Definition: utils.c:216
GLdouble n
Definition: glext.h:7729
Definition: parser.c:48
void * xmalloc(size_t size)
Definition: utils.c:201
char line[200]
Definition: main.c:97
GLenum GLsizei len
Definition: glext.h:6722
_Check_return_opt_ _CRTIMP char *__cdecl fgets(_Out_writes_z_(_MaxCount) char *_Buf, _In_ int _MaxCount, _Inout_ FILE *_File)

Referenced by write_dlldata().

◆ xmalloc()

void* xmalloc ( size_t  size)

Definition at line 201 of file utils.c.

202 {
203  void *res;
204 
205  assert(size > 0);
206  res = malloc(size);
207  if(res == NULL)
208  {
209  error("Virtual memory exhausted.\n");
210  }
211  memset(res, 0x55, size);
212  return res;
213 }
#define assert(x)
Definition: debug.h:53
smooth NULL
Definition: ftsmooth.c:416
GLsizeiptr size
Definition: glext.h:5919
void error(const char *s,...)
Definition: utils.c:104
GLuint res
Definition: glext.h:9613
#define malloc
Definition: debug_ros.c:4
#define memset(x, y, z)
Definition: compat.h:39

Referenced by dup_basename(), init_output_buffer(), widl_getline(), and xstrdup().

◆ xrealloc()

void* xrealloc ( void p,
size_t  size 
)

Definition at line 216 of file utils.c.

217 {
218  void *res;
219 
220  assert(size > 0);
221  res = realloc(p, size);
222  if(res == NULL)
223  {
224  error("Virtual memory exhausted.\n");
225  }
226  return res;
227 }
#define realloc
Definition: debug_ros.c:6
#define assert(x)
Definition: debug.h:53
smooth NULL
Definition: ftsmooth.c:416
GLsizeiptr size
Definition: glext.h:5919
void error(const char *s,...)
Definition: utils.c:104
GLuint res
Definition: glext.h:9613
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by _rdpdr_check_fds(), add_func_desc(), add_index(), add_name(), add_var_desc(), addcchar(), append_data(), build_iface_list(), channel_process(), check_output_buffer_space(), ctl2_alloc_segment(), extract_rev_infos(), extract_test(), get_subtests(), local_href(), process_data_pdu(), rdp5_process(), rdpdr_process_irp(), tcp_init(), tcp_recv(), widl_getline(), and xclip_handle_PropertyNotify().

◆ xstrdup()

char* xstrdup ( const char str)

Definition at line 229 of file utils.c.

230 {
231  char *s;
232 
233  assert(str != NULL);
234  s = xmalloc(strlen(str)+1);
235  return strcpy(s, str);
236 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define assert(x)
Definition: debug.h:53
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
void * xmalloc(size_t size)
Definition: utils.c:201
GLdouble s
Definition: gl.h:2039
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388

Referenced by add_explicit_handle_if_necessary(), add_importlib(), attr_token(), check_for_additional_prototype_types(), check_remoting_args(), declare_var(), do_import(), duptype(), extract_test(), generic_msg(), get_buffered_cstring(), kw_token(), main(), make_library(), make_token(), push_namespace(), seamless_process_line(), set_target(), switch_to_acf(), type_new_alias(), type_new_array(), type_new_encapsulated_union(), type_new_function(), wave_out_open(), while(), write_conf_or_var_desc(), xkeymap_from_locale(), and yyparse().

Variable Documentation

◆ byte_swapped

int byte_swapped = 0

Definition at line 251 of file utils.c.

Referenced by put_dword(), put_qword(), put_word(), and save_all_changes().

◆ nb_resources

unsigned int nb_resources
static

Definition at line 261 of file utils.c.

Referenced by add_output_to_resources(), and flush_output_resources().

◆ output_buffer

Definition at line 252 of file utils.c.

Referenced by add_output_to_resources().

◆ output_buffer_pos

◆ output_buffer_size

size_t output_buffer_size

Definition at line 254 of file utils.c.

Referenced by check_output_buffer_space(), init_output_buffer(), and put_str().

◆ resources

◆ want_near_indication

const int want_near_indication = 0
static

Definition at line 38 of file utils.c.

Referenced by generic_msg().