summaryrefslogtreecommitdiff
path: root/ot_scan.h
blob: ca3bbbd4a0f867f59b7d3c25afdc676e342d88a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* This software was written by Dirk Engling <erdgeist@erdgeist.org>
   It is considered beerware. Prost. Skol. Cheers or whatever.

   $id$ */

#ifndef OT_SCAN_H__
#define OT_SCAN_H__

#include <stddef.h>
#include <stddef.h>
#include <stdint.h>

/* Read an unsigned decimal number from src into dest and return how many
   characters were consumed. Returns zero and leaves dest untouched when src
   does not begin with a digit, or when the value would exceed max. */
size_t scan_uint(const char *src, uint64_t *dest, uint64_t max);

/* As scan_uint, but following the bencode integer grammar, which permits a
   leading zero on zero alone. */
size_t scan_uint_bencode(const char *src, uint64_t *dest, uint64_t max);

/* Read a signed decimal number that has to take up exactly len characters,
   which is how a value lifted out of a query string arrives. Returns 0, or
   -1 leaving dest untouched. */
int    scan_int(const char *src, size_t len, int64_t *dest);

#endif