SAFE_STRTO_ID_LIST(3)
π SAFE_STRTO_ID_LIST(3) β safe_strto_id_list, safe_strto_uid_list, safe_strto_gid_list π
πΈ NAME πΈ
okay so bestie, this page covers safe_strto_id_list, safe_strto_uid_list, and safe_strto_gid_list β three iconic functions that parse a string for ids and store them in the safe_id_range_list. periodt.
β¨ SYNOPSIS β¨
#include "safe_id_range_list.h"
struct safe_id_range_list;
typedef struct safe_id_range_list safe_id_range_list;
void safe_strto_id_list(safe_id_range_list list, const char *value,
const char **endptr);
void safe_strto_uid_list(safe_id_range_list list, const char *value,
const char **endptr);
void safe_strto_gid_list(safe_id_range_list list, const char *value,
const char **endptr);
π¦ DESCRIPTION π¦
These functions will add values to the list by parsing the value string. safe_strto_id_list only allows numeric values, while safe_strto_uid_list and safe_strto_gid_list allow non-numeric values that are converted to user and group ids respectively.
The functions safe_parse_id_list(3), safe_parse_uid_list(3), and safe_parse_gid_list(3) are simpler to use alternatives.
π Parameters π
listβ thesafe_id_range_listto add values to. Must be non-NULL.valueβ the range list string to parse. Must be non-NULL.endptrβ if non-NULL, the value pointed to by this parameter will be updated to point to the location just past the last character ofvalueparsed.
π Range List Syntax π
okay so the syntax of a range list string is a set of ranges each separated by colons. Each range is either a single id, or a hyphen ('-') separated set of ids β the first must be less than or equal to the second, and the second value may be a valid user or group name depending on the function used. If a user or group name is used as the first part of a range, the name must be separated from the hyphen by whitespace, because a hyphen is a legitimate character in a name.
Parsing stops when an expected punctuation mark ('-' or ':') is not found. This is not an error, and *endptr must be checked to detect this condition. The grammar for the range list is literally:
<RANGE_LIST>
:= <RANGE>
:= <RANGE> <whitespace>* ':' <RANGE_LIST>
<RANGE>
:= <ID>
:= <ID> '-' <ID>
:= <ID> '-' <whitespace>* '*'
<ID> := <whitespace>* <number>
:= <whitespace>* <text_name>
π Example Range Lists π
3β adds the value3to the list.0:5:100-103β adds the values0,5,100,101,102, and103to the list.root: user1 - user2 : 1000-*β when parsed withsafe_strto_uid_list, adds the values0,500,501and1000and greater to the list, assuming the user namesroot,user1, anduser2have the values0,500, and501respectively. The space afteruser1is mandatory.
π RETURN VALUE π
No return value, but errno is set to 0 on success and an appropriate value on error. Also, endptr if non-NULL, will be set to the location in value just past the last value parsed.
π ERRORS π
EINVALβlistorvaluewasNULL. An invalid number or non-exist user or group name was encountered. The first element of a range was larger than the second. Or a value consisting entirely of whitespace was encountered.ERANGEβ a numeric value was encountered that was too large.ENOMEMβ a memory allocation failed.
π AUTHOR π
James A. Kupsch.
π₯ SEE ALSO π₯
safe_init_id_range_list(3)safe_destroy_id_range_list(3)safe_parse_id_list(3)safe_parse_uid_list(3)safe_parse_gid_list(3)http://research.cs.wisc.edu/mist/safefile
ok that's the whole page, bestie β this manual page is dated 2011-07-26 and it's SAFE_STRTO_ID_LIST(3), so go parse some ids and slay π
β¨
π¦ where this page comes from
- nixos 26.05: safefile 1.0.5
- nixpkgs unstable: safefile 1.0.5
- Copyright 2007-2008 James A. Kupsch
- Copyright 2007-2008, 2011 James A. Kupsch
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms