netinet/in.h: add IPPROTO_MH
[uclibc-ng.git] / libc / stdio / _load_inttype.c
blob8c0a60abe8f2a10c21eaf2566d8af5bf4f292af5
1 /* Copyright (C) 2004 Manuel Novoa III <mjn3@codepoet.org>
3 * GNU Library General Public License (LGPL) version 2 or later.
5 * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
6 */
8 #include "_stdio.h"
9 #include <printf.h>
11 uintmax_t _load_inttype(int desttype, register const void *src, int uflag)
13 if (uflag >= 0) { /* unsigned */
14 #if LONG_MAX != INT_MAX
15 if (desttype & (PA_FLAG_LONG|PA_FLAG_LONG_LONG)) {
16 #ifdef LLONG_MAX
17 if (desttype == PA_FLAG_LONG_LONG) {
18 return *((unsigned long long int *) src);
20 #endif
21 return *((unsigned long int *) src);
23 #else /* LONG_MAX != INT_MAX */
24 #ifdef LLONG_MAX
25 if (desttype & PA_FLAG_LONG_LONG) {
26 return *((unsigned long long int *) src);
28 #endif
29 #endif /* LONG_MAX != INT_MAX */
31 unsigned int x;
32 x = *((unsigned int *) src);
33 if (desttype == __PA_FLAG_CHAR) x = (unsigned char) x;
34 #if SHRT_MAX != INT_MAX
35 if (desttype == PA_FLAG_SHORT) x = (unsigned short int) x;
36 #endif
37 return x;
39 } else { /* signed */
40 #if LONG_MAX != INT_MAX
41 if (desttype & (PA_FLAG_LONG|PA_FLAG_LONG_LONG)) {
42 #ifdef LLONG_MAX
43 if (desttype == PA_FLAG_LONG_LONG) {
44 return *((long long int *) src);
46 #endif
47 return *((long int *) src);
49 #else /* LONG_MAX != INT_MAX */
50 #ifdef LLONG_MAX
51 if (desttype & PA_FLAG_LONG_LONG) {
52 return *((long long int *) src);
54 #endif
55 #endif /* LONG_MAX != INT_MAX */
57 int x;
58 x = *((int *) src);
59 if (desttype == __PA_FLAG_CHAR) x = (signed char) x;
60 #if SHRT_MAX != INT_MAX
61 if (desttype == PA_FLAG_SHORT) x = (short int) x;
62 #endif
63 return x;