-\f
-
-/* This page contains functions that return format strings for
- printf for printing out numbers in different formats */
-
-/* Returns the appropriate printf format for hexadecimal
- numbers. */
-char *
-local_hex_format_custom (char *pre)
-{
- static char form[50];
-
- strcpy (form, local_hex_format_prefix ());
- strcat (form, "%");
- strcat (form, pre);
- strcat (form, local_hex_format_specifier ());
- strcat (form, local_hex_format_suffix ());
- return form;
-}
-
-/* Converts a LONGEST to custom hexadecimal and stores it in a static
- string. Returns a pointer to this string. */
-char *
-local_hex_string (LONGEST num)
-{
- return local_hex_string_custom (num, "l");
-}
-
-/* Converts a LONGEST number to custom hexadecimal and stores it in a static
- string. Returns a pointer to this string. Note that the width parameter
- should end with "l", e.g. "08l" as with calls to local_hex_string_custom */
-
-char *
-local_hex_string_custom (LONGEST num, char *width)
-{
-#define RESULT_BUF_LEN 50
- static char res2[RESULT_BUF_LEN];
- char format[RESULT_BUF_LEN];
- int field_width;
- int num_len;
- int num_pad_chars;
- char *pad_char; /* string with one character */
- int pad_on_left;
- char *parse_ptr;
- char temp_nbr_buf[RESULT_BUF_LEN];
-
- /* Use phex_nz to print the number into a string, then
- build the result string from local_hex_format_prefix, padding and
- the hex representation as indicated by "width". */
- strcpy (temp_nbr_buf, phex_nz (num, sizeof (num)));
- /* parse width */
- parse_ptr = width;
- pad_on_left = 1;
- pad_char = " ";
- if (*parse_ptr == '-')
- {
- parse_ptr++;
- pad_on_left = 0;
- }
- if (*parse_ptr == '0')
- {
- parse_ptr++;
- if (pad_on_left)
- pad_char = "0"; /* If padding is on the right, it is blank */
- }
- field_width = atoi (parse_ptr);
- num_len = strlen (temp_nbr_buf);
- num_pad_chars = field_width - strlen (temp_nbr_buf); /* possibly negative */
-
- if (strlen (local_hex_format_prefix ()) + num_len + num_pad_chars
- >= RESULT_BUF_LEN) /* paranoia */
- internal_error (__FILE__, __LINE__,
- "local_hex_string_custom: insufficient space to store result");
-
- strcpy (res2, local_hex_format_prefix ());
- if (pad_on_left)
- {
- while (num_pad_chars > 0)
- {
- strcat (res2, pad_char);
- num_pad_chars--;
- }
- }
- strcat (res2, temp_nbr_buf);
- if (!pad_on_left)
- {
- while (num_pad_chars > 0)
- {
- strcat (res2, pad_char);
- num_pad_chars--;
- }
- }
- return res2;
-
-} /* local_hex_string_custom */
-
-/* Returns the appropriate printf format for octal
- numbers. */
-char *
-local_octal_format_custom (char *pre)
-{
- static char form[50];
-
- strcpy (form, local_octal_format_prefix ());
- strcat (form, "%");
- strcat (form, pre);
- strcat (form, local_octal_format_specifier ());
- strcat (form, local_octal_format_suffix ());
- return form;
-}
-
-/* Returns the appropriate printf format for decimal numbers. */
-char *
-local_decimal_format_custom (char *pre)
-{
- static char form[50];
-
- strcpy (form, local_decimal_format_prefix ());
- strcat (form, "%");
- strcat (form, pre);
- strcat (form, local_decimal_format_specifier ());
- strcat (form, local_decimal_format_suffix ());
- return form;
-}
-\f