-int do_toplevel_adns(ClientData cd, Tcl_Interp *ip,
- const Adns_SubCommand *subcmd,
- int objc, Tcl_Obj *const *objv) {
- return subcmd->func(0,ip,objc,objv);
-}
-
-#define URANDOM "/dev/urandom"
-
-int get_urandom(Tcl_Interp *ip, Byte *buffer, int l) {
- static FILE *urandom;
-
- int r, esave;
-
- if (!urandom) {
- urandom= fopen(URANDOM,"rb");
- if (!urandom) return posixerr(ip,errno,"open " URANDOM);
- }
- r= fread(buffer,1,l,urandom);
- if (r==l) return 0;
-
- esave= errno;
- fclose(urandom); urandom=0;
-
- if (ferror(urandom)) {
- return posixerr(ip,errno,"read " URANDOM);
- } else {
- assert(feof(urandom));
- return staticerr(ip, URANDOM " gave eof!", 0);
- }
-}
-
-int Hbytes_Init(Tcl_Interp *ip) {
- const TopLevel_Command *cmd;
-
- Tcl_RegisterObjType(&hbytes_type);
- Tcl_RegisterObjType(&blockcipherkey_type);
- Tcl_RegisterObjType(&enum_nearlytype);
- Tcl_RegisterObjType(&enum1_nearlytype);
- Tcl_RegisterObjType(&sockaddr_type);
- Tcl_RegisterObjType(&tabledataid_nearlytype);
- Tcl_RegisterObjType(&ulong_type);
- Tcl_RegisterObjType(&addrmap_type);
-
- for (cmd=toplevel_commands;
- cmd->name;
- cmd++)
- Tcl_CreateObjCommand(ip, (char*)cmd->name, cmd->func, 0,0);
-
- return TCL_OK;