Fix invalid long long format specifier

Per POSIX:

       L      Specifies that a following a, A, e, E, f, F, g, or G  conversion
              specifier applies to a long double argument.

L is only intended to be used with long doubles, not long long ints.

the proper way is to use "ll" instead.

Signed-off-by: John Spencer <maillist-alsa@barfooze.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
John Spencer 2012-04-24 12:58:48 +02:00 committed by Takashi Iwai
parent bb5c49fa41
commit 1d3f7975f9
2 changed files with 4 additions and 4 deletions

View file

@ -496,7 +496,7 @@ static int safe_strtoll(const char *str, long long *val)
if (!*str) if (!*str)
return -EINVAL; return -EINVAL;
errno = 0; errno = 0;
if (sscanf(str, "%Li%n", &v, &endidx) < 1) if (sscanf(str, "%lli%n", &v, &endidx) < 1)
return -EINVAL; return -EINVAL;
if (str[endidx]) if (str[endidx])
return -EINVAL; return -EINVAL;
@ -1378,7 +1378,7 @@ static int _snd_config_save_node_value(snd_config_t *n, snd_output_t *out,
snd_output_printf(out, "%ld", n->u.integer); snd_output_printf(out, "%ld", n->u.integer);
break; break;
case SND_CONFIG_TYPE_INTEGER64: case SND_CONFIG_TYPE_INTEGER64:
snd_output_printf(out, "%Ld", n->u.integer64); snd_output_printf(out, "%lld", n->u.integer64);
break; break;
case SND_CONFIG_TYPE_REAL: case SND_CONFIG_TYPE_REAL:
snd_output_printf(out, "%-16g", n->u.real); snd_output_printf(out, "%-16g", n->u.real);
@ -2630,7 +2630,7 @@ int snd_config_get_ascii(const snd_config_t *config, char **ascii)
{ {
char res[32]; char res[32];
int err; int err;
err = snprintf(res, sizeof(res), "%Li", config->u.integer64); err = snprintf(res, sizeof(res), "%lli", config->u.integer64);
if (err < 0 || err == sizeof(res)) { if (err < 0 || err == sizeof(res)) {
assert(0); assert(0);
return -ENOMEM; return -ENOMEM;

View file

@ -175,7 +175,7 @@ int main(int argc, char** argv)
printf("output.status.xruns = %zi\n", snd_rawmidi_status_get_xruns(ostat)); printf("output.status.xruns = %zi\n", snd_rawmidi_status_get_xruns(ostat));
diff = timediff(end, start); diff = timediff(end, start);
printf("Time diff: %Liusec (%Li bytes/sec)\n", diff, ((long long)opos * 1000000) / diff); printf("Time diff: %lliusec (%lli bytes/sec)\n", diff, ((long long)opos * 1000000) / diff);
if (verbose) { if (verbose) {
fprintf(stderr,"Closing\n"); fprintf(stderr,"Closing\n");