C library to create UUIDs. Also included are Lua bindings.
License
spc476/SPCUUID
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
master
Could not load branches
Nothing to show
Could not load tags
Nothing to show
{{ refName }}
default
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
-
Clone
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
- Open with GitHub Desktop
- Download ZIP
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
SPCUUID: The rather complete UUID generation library SPCUUID implements an API to generate RFC-4122 style UUIDs, which include the following UUID versions: 1. the time based version (also uses a MAC address if found) 2. not implemented/not described in RFC-4122 3. name-based varsion which uses MD5 hashing 4. a randomly generated UUID 5. name-based version which uses SHA-1 hashing This library also includes definitions for the following UUIDs (as specificed in RFC-4122): 1. DNS UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 2. URL UUID: 6ba7b811-9dad-11d1-80b4-00c04fd430c8 3. OID UUID: 6ba7b812-9dad-11d1-80b4-00c04fd430c8 4. X500 UUID: 6ba7b814-9dad-11d1-80b4-00c04fd430c8 5. NULL UUID: 00000000-0000-0000-0000-000000000000 These are declared as: extern const uuid__t c_uuid_namespace_dns; extern const uuid__t c_uuid_namespace_url; extern const uuid__t c_uuid_namespace_oid; extern const uuid__t c_uuid_namespace_x500; extern const uuid__t c_uuid_null; The following functions are defined: int uuidlib_cmp(const uuid__t *a,const uuid__t *b); This function compares two UUIDs and returns a negative value if a is less than b, 0 if a is equal to b, and a positive value if a is larger than b. int uuidlib_parse(uuid__t *uuid,const char *text); This function will parse a text representation of a UUID. It returns 0 on success, or an error suitable for use with strerror(). int uuidlib_toa(const uuid__t *uuid,char *dest,size_t); This function will format a uuid__t for display purposes. It returns the number of characters written (36) on success, a negative value if there was an error. int uuidlib_v1(uuid__t *uuid,int clockseq); Generates a version 1 UUID, based off a MAC address and the current time. If a MAC address cannot be found, a random MAC will be generated. If clockseq is less than 0, a random clock sequence value will be generated; otherwise, the value given will be used. int uuidlib_v2(uuid__t *uuid); Not implemented---returns ENOSYS. int uuidlib_v3( uuid__t *uuid, const uuid__t *ns, const void *data, const size_t size ); Generates a name-based UUID from the given UUID (ns) and data (data,size) using an MD5 hash. Returns 0 if success. You must link to -lcrypto if you use this function. int uuidlib_v4(uuid__t *uuid); Generates a random UUID. This function assumes that srand() has been called prior. Returns 0 if success. int uuidlib_v5( uuid__t *uuid, const uuid__t *ns, const void *data, const size_t size ); Generates a name-based UUID from the given UUID (ns) and data (data,size) using an MD5 hash. Returns 0 if success. You must link to -lcrypto if you use this function. The Lua bindings: require "org.conman.uuid" The predefined UUIDs are: org.conman.uuid.URL org.conman.uuid.DNS org.conman.uuid.X500 org.conman.uuid.OID org.conman.uuid.NIL Functions are: org.conman.uuid.parse(string) Parse a string into a UUID org.conman.uuid.breakout(uuid) Return a table with the UUID broken down into fields (only valid for a v1 UUID, but will break down any UUID) org.conman.uuid() Return a v4 UUID (random UUID) org.conman.uuid(n) Return a v1 UUID (MAC/time based UUID). If n < 0, then the "clock sequence" portion of the UUID will be randomly generated; otherwise, the value of n is used. n should increase with each call; if you really don't care manage this, passing in a -1 should be used. org.conman.uuid(uuid,string) Return a v5 UUID (SHA-1 name-based UUID) org.conman.uuid(uuid,string,true) Return a v3 UUID (MD5 name-based UUID) UUIDs support the following metamethods: __tostring - returns display format __eq - compares two UUIDs __lt - compares two UUIDs __le - compares two UUIDs __len - returns 16
About
C library to create UUIDs. Also included are Lua bindings.
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published