elfops: hide elf_ident(), no users outside elfops
[mit.git] / util.h
blobd6112b06a550bd0bf2772f6f1d9c4d99a7c967cc
1 #ifndef _UTIL_H
2 #define _UTIL_H
4 #include <stdio.h>
6 struct string_table
8 unsigned int cnt;
9 unsigned int max;
10 const char *str[0];
13 char *getline_wrapped(FILE *file, unsigned int *linenum);
15 void filename2modname(char *modname, const char *filename);
16 char *underscores(char *string);
17 char *my_basename(const char *path);
19 struct string_table *strtbl_add(const char *str, struct string_table *tbl);
21 const char *next_string(const char *string, unsigned long *secsize);
24 * Change endianness of x if conv is true.
26 #define END(x, conv) \
27 ({ \
28 typeof(x) __x; \
29 if (conv) __swap_bytes(&(x), &(__x), sizeof(__x)); \
30 else __x = (x); \
31 __x; \
34 static inline void __swap_bytes(const void *src, void *dest, unsigned int size)
36 unsigned int i;
37 for (i = 0; i < size; i++)
38 ((unsigned char*)dest)[i] = ((unsigned char*)src)[size - i-1];
41 int native_endianness(void);
43 #define streq(a,b) (strcmp((a),(b)) == 0)
44 #define strstarts(a,start) (strncmp((a),(start), strlen(start)) == 0)
46 #endif