Added to the repository by gnulib-sync
Showing
8 changed files
with
242 additions
and
0 deletions
m4/inttostr.m4
0 → 100644
1 | #serial 5 | ||
2 | dnl Copyright (C) 2004, 2005 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_INTTOSTR], | ||
8 | [ | ||
9 | MU_LIBSOURCES([inttostr.c, inttostr.h, intprops.h]) | ||
10 | |||
11 | dnl We don't technically need to list the following .c files, since their | ||
12 | dnl functions are named in the MU_LIBOBJ calls, but this is an unusual | ||
13 | dnl module and it seems a little clearer to do so. | ||
14 | MU_LIBSOURCES([imaxtostr.c, offtostr.c, umaxtostr.c]) | ||
15 | |||
16 | MU_LIBOBJ([imaxtostr]) | ||
17 | MU_LIBOBJ([offtostr]) | ||
18 | MU_LIBOBJ([umaxtostr]) | ||
19 | |||
20 | gl_PREREQ_INTTOSTR | ||
21 | gl_PREREQ_IMAXTOSTR | ||
22 | gl_PREREQ_OFFTOSTR | ||
23 | gl_PREREQ_UMAXTOSTR | ||
24 | ]) | ||
25 | |||
26 | # Prerequisites of lib/inttostr.h. | ||
27 | AC_DEFUN([gl_PREREQ_INTTOSTR], [ | ||
28 | AC_REQUIRE([gl_AC_TYPE_INTMAX_T]) | ||
29 | AC_REQUIRE([gl_AC_TYPE_UINTMAX_T]) | ||
30 | AC_REQUIRE([AC_TYPE_OFF_T]) | ||
31 | : | ||
32 | ]) | ||
33 | |||
34 | # Prerequisites of lib/imaxtostr.c. | ||
35 | AC_DEFUN([gl_PREREQ_IMAXTOSTR], [:]) | ||
36 | |||
37 | # Prerequisites of lib/offtostr.c. | ||
38 | AC_DEFUN([gl_PREREQ_OFFTOSTR], [:]) | ||
39 | |||
40 | # Prerequisites of lib/umaxtostr.c. | ||
41 | AC_DEFUN([gl_PREREQ_UMAXTOSTR], [:]) |
mailbox/argp-pin.c
0 → 100644
1 | /* Full and short program names for argp module | ||
2 | Copyright (C) 2005 Free Software Foundation, Inc. | ||
3 | |||
4 | This program is free software; you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation; either version 2, or (at your option) | ||
7 | any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License along | ||
15 | with this program; if not, write to the Free Software Foundation, | ||
16 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
17 | |||
18 | #ifdef HAVE_CONFIG_H | ||
19 | # include <config.h> | ||
20 | #endif | ||
21 | |||
22 | #ifndef HAVE_PROGRAM_INVOCATION_SHORT_NAME | ||
23 | char *program_invocation_short_name = 0; | ||
24 | #endif | ||
25 | #ifndef HAVE_PROGRAM_INVOCATION_NAME | ||
26 | char *program_invocation_name = 0; | ||
27 | #endif | ||
28 |
mailbox/imaxtostr.c
0 → 100644
mailbox/intprops.h
0 → 100644
1 | /* intprops.h -- properties of integer types | ||
2 | |||
3 | Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2, or (at your option) | ||
8 | any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software Foundation, | ||
17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
18 | |||
19 | /* Written by Paul Eggert. */ | ||
20 | |||
21 | #include <limits.h> | ||
22 | |||
23 | /* The extra casts in the following macros work around compiler bugs, | ||
24 | e.g., in Cray C 5.0.3.0. */ | ||
25 | |||
26 | /* True if the arithmetic type T is an integer type. bool counts as | ||
27 | an integer. */ | ||
28 | #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) | ||
29 | |||
30 | /* True if negative values of the signed integer type T use two's | ||
31 | complement, ones' complement, or signed magnitude representation, | ||
32 | respectively. Much GNU code assumes two's complement, but some | ||
33 | people like to be portable to all possible C hosts. */ | ||
34 | #define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) | ||
35 | #define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) | ||
36 | #define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) | ||
37 | |||
38 | /* True if the arithmetic type T is signed. */ | ||
39 | #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) | ||
40 | |||
41 | /* The maximum and minimum values for the integer type T. These | ||
42 | macros have undefined behavior if T is signed and has padding bits. | ||
43 | If this is a problem for you, please let us know how to fix it for | ||
44 | your host. */ | ||
45 | #define TYPE_MINIMUM(t) \ | ||
46 | ((t) (! TYPE_SIGNED (t) \ | ||
47 | ? (t) 0 \ | ||
48 | : TYPE_SIGNED_MAGNITUDE (t) \ | ||
49 | ? ~ (t) 0 \ | ||
50 | : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) | ||
51 | #define TYPE_MAXIMUM(t) \ | ||
52 | ((t) (! TYPE_SIGNED (t) \ | ||
53 | ? (t) -1 \ | ||
54 | : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) | ||
55 | |||
56 | /* Return zero if T can be determined to be an unsigned type. | ||
57 | Otherwise, return 1. | ||
58 | When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a | ||
59 | tighter bound. Otherwise, it overestimates the true bound by one byte | ||
60 | when applied to unsigned types of size 2, 4, 16, ... bytes. | ||
61 | The symbol signed_type_or_expr__ is private to this header file. */ | ||
62 | #if __GNUC__ >= 2 | ||
63 | # define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t)) | ||
64 | #else | ||
65 | # define signed_type_or_expr__(t) 1 | ||
66 | #endif | ||
67 | |||
68 | /* Bound on length of the string representing an integer type or expression T. | ||
69 | Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485; | ||
70 | add 1 for integer division truncation; add 1 more for a minus sign | ||
71 | if needed. */ | ||
72 | #define INT_STRLEN_BOUND(t) \ | ||
73 | ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \ | ||
74 | + signed_type_or_expr__ (t) + 1) | ||
75 | |||
76 | /* Bound on buffer size needed to represent an integer type or expression T, | ||
77 | including the terminating null. */ | ||
78 | #define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) |
mailbox/inttostr.c
0 → 100644
1 | /* inttostr.c -- convert integers to printable strings | ||
2 | |||
3 | Copyright (C) 2001 Free Software Foundation, Inc. | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2, or (at your option) | ||
8 | any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software Foundation, | ||
17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
18 | |||
19 | /* Written by Paul Eggert */ | ||
20 | |||
21 | #ifdef HAVE_CONFIG_H | ||
22 | # include <config.h> | ||
23 | #endif | ||
24 | #include "inttostr.h" | ||
25 | |||
26 | /* Convert I to a printable string in BUF, which must be at least | ||
27 | INT_BUFSIZE_BOUND (INTTYPE) bytes long. Return the address of the | ||
28 | printable string, which need not start at BUF. */ | ||
29 | |||
30 | char * | ||
31 | inttostr (inttype i, char *buf) | ||
32 | { | ||
33 | char *p = buf + INT_STRLEN_BOUND (inttype); | ||
34 | *p = 0; | ||
35 | |||
36 | if (i < 0) | ||
37 | { | ||
38 | do | ||
39 | *--p = '0' - i % 10; | ||
40 | while ((i /= 10) != 0); | ||
41 | |||
42 | *--p = '-'; | ||
43 | } | ||
44 | else | ||
45 | { | ||
46 | do | ||
47 | *--p = '0' + i % 10; | ||
48 | while ((i /= 10) != 0); | ||
49 | } | ||
50 | |||
51 | return p; | ||
52 | } |
mailbox/inttostr.h
0 → 100644
1 | /* inttostr.h -- convert integers to printable strings | ||
2 | |||
3 | Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2, or (at your option) | ||
8 | any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software Foundation, | ||
17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
18 | |||
19 | /* Written by Paul Eggert */ | ||
20 | |||
21 | #if HAVE_INTTYPES_H | ||
22 | # include <inttypes.h> | ||
23 | #endif | ||
24 | #if HAVE_STDINT_H | ||
25 | # include <stdint.h> | ||
26 | #endif | ||
27 | |||
28 | #include <sys/types.h> | ||
29 | |||
30 | #include "intprops.h" | ||
31 | |||
32 | char *offtostr (off_t, char *); | ||
33 | char *imaxtostr (intmax_t, char *); | ||
34 | char *umaxtostr (uintmax_t, char *); |
mailbox/offtostr.c
0 → 100644
mailbox/umaxtostr.c
0 → 100644
-
Please register or sign in to post a comment