Main Page | Modules | Data Structures | File List | Data Fields

The kdb Command Source Code: Example of Full Library Utilization


Functions

int commandHelp ()
 Prints out help to the kdb (1) command.
int parseCommandLine (int argc, char *argv[])
int commandRemove ()
 The business logic behind 'kdb rm' command.
int commandMove ()
 The business logic behind 'kdb mv' command.
int commandSet ()
 The business logic behind 'kdb set' command.
int commandLink ()
 The business logic behind 'kdb ln' command.
int commandList ()
 The business logic behind 'kdb ls' command.
int commandGet ()
 Business logic behind the 'kdb get' command.
int commandEdit ()
 Opens an editor to edit an XML representation of the keys.
int commandInfo ()
 Business logic behind the 'kdb info' command.
int commandImport ()
 Business logic behind the 'kdb import' command.
int commandExport ()
 Business logic behind the 'kdb export' command.
int commandMonitor ()
 Business logic behind 'kdb mon' command.
int main (int argc, char **argv)

Function Documentation

int commandHelp  ) 
 

Prints out help to the kdb (1) command.

TODO: should be same as man page help2man? --help does not work

Example:
 bash$ kdb help
 bash$ kdb -h

Definition at line 989 of file kdb.c.

Referenced by parseCommandLine().

int parseCommandLine int  argc,
char *  argv[]
 

Use KDB_ROOT as prefix in key name

Definition at line 117 of file kdb.c.

References commandHelp(), and strblen().

Referenced by main().

int commandRemove  ) 
 

The business logic behind 'kdb rm' command.

Example:
 bash$ kdb rm user/env/alias/ls   # get rid to the ls alias
See also:
kdbRemove()
Parameters:
argKeyName name of the key that will be removed

Definition at line 500 of file kdb.c.

References kdbRemove().

int commandMove  ) 
 

The business logic behind 'kdb mv' command.

The central method used is kdbRename() but this function is way more robust, and is an example on how to handle errors.

Example:
 bash# kdb mv user/env  user:tatiana/env
See also:
kdbRename()
Parameters:
argKeyName name of the source key
argData name of the target key

Definition at line 531 of file kdb.c.

References kdbRename(), KEY_SWITCH_END, keyDel(), keyGetNameSize(), and keyNew().

int commandSet  ) 
 

The business logic behind 'kdb set' command.

Sets value to a single key.

Example:
 bash$ kdb set -c "My shell prompt" user/env/env1/PS1 '\h:\w\$'
Parameters:
argKeyName name of the key that will be set
argComment comment to be set to key (-c)
argType type of the key (-t)
argMode access permissions that will be set to sey (-m)
argUID UID to be set to sey
argGID GID to be set to sey
argData the value to the key
argFile a filename to use as the input for the value
See also:
kdbSetKey()

Definition at line 594 of file kdb.c.

References kdbGetKey(), kdbSetKey(), KEY_SWITCH_END, KEY_TYPE_BINARY, KEY_TYPE_DIR, keyDel(), keyGetType(), keyNew(), keySetAccess(), keySetComment(), keySetGID(), keySetLink(), keySetRaw(), keySetString(), keySetType(), keySetUID(), and strblen().

int commandLink  ) 
 

The business logic behind 'kdb ln' command.

Example:
 bash$ kdb ln user:valeria/sw/MyApp user/sw/MyApp  # make my personal MyApp configurations be a link to valerias configs
Parameters:
argKeyName name of the target key
argData name of the link key to be created
See also:
kdbLink(), keySetType()

Definition at line 706 of file kdb.c.

References kdbLink().

int commandList  ) 
 

The business logic behind 'kdb ls' command.

Parameters:
argKeyName key name to be listed
argRecursive whether to act recursivelly (-R)
argValue whether to show key values or not (-v)
argAll whether to list also inactive keys (-a)
argXML whether to create XML output (-x)
Example:
 bash$ kdb ls -R   # list all keys from system and user trees
 bash$ kdb ls -Ra  # list them all plus the hidden/inactive keys
 bash$ kdb ls -Rav # list all showing value
 bash# kdb ls -Rxv # equivalent to 'kdb export'
 bash$ kdb ls -Rv user/env # list my aliases and environment vars
See also:
kdbGetRootKeys(), kdbGetKeyChildKeys(), keyToStream(), ksToStream()

commandExport() for the 'kdb export' command

Definition at line 760 of file kdb.c.

References KDB_O_DIR, KDB_O_FULLNAME, KDB_O_FULLUGID, KDB_O_NFOLLOWLINK, KDB_O_STATONLY, KDB_O_XMLHEADERS, kdbGetChildKeys(), kdbGetKey(), kdbGetKeyChildKeys(), kdbGetRootKeys(), kdbStatKey(), KEY_SWITCH_END, keyDel(), keyNew(), ksAppend(), ksAppendKeys(), ksClose(), ksDel(), ksGetSize(), ksHead(), ksNew(), ksNext(), ksPop(), ksRewind(), and ksToStream().

Referenced by commandExport().

int commandGet  ) 
 

Business logic behind the 'kdb get' command.

Get a key and return its value to you.

Example:
 bash$ kdb get user/env/alias/ls
 ls -Fh --color=tty
Parameters:
argKeyName key to get value
argDescriptive show also the key comment (-d)
argShell output suitable for shell scripts (-s)
argLong show also the key name (-l)
argFullName with argLong, show the user domain too (-f)
See also:
kdbGetKey(), kdbGetBaseName(), keyGetComment(), keyGetString()

Definition at line 895 of file kdb.c.

References kdbGetKey(), KEY_SWITCH_END, keyDel(), keyGetBaseName(), keyGetBaseNameSize(), keyGetBinary(), keyGetComment(), keyGetCommentSize(), keyGetFullName(), keyGetFullNameSize(), keyGetName(), keyGetNameSize(), keyGetString(), keyGetType(), keyGetValueSize(), keyIsBin(), and keyNew().

int commandEdit  ) 
 

Opens an editor to edit an XML representation of the keys.

This is one of the most complex commands of the kdb program. It will

  1. retrieve the desired keys
  2. put them inside an editor in an XML format to let the user change them
  3. wait for the editor to finish
  4. reread the edited XML, converting to an internal KeySet
  5. compare original and edited KeySets, with ksCompare(), to detect differences
  6. remove removed keys
  7. update updated keys
  8. add added keys
  9. leave untouched the not-changed keys

Example:
 bash$ EDITOR=kedit kdb edit -R user/env # edit with kedit
 bash# kdb edit -R system/sw/MyApp       # defaults to vi editor
Parameters:
argKeyName the parent key name (and children) that will be edited
argRecursive whether to act recursivelly or not
argAll whether to edit inactive keys or not
EDITOR environment var that defines editor to use, or vi
See also:
keyCompare(), ksCompare(), kdbGetChildKeys(), kdbSetKeys(), ksToStream(), kdbRemoveKey()

Definition at line 1244 of file kdb.c.

References KDB_O_FULLNAME, KDB_O_FULLUGID, KDB_O_NFOLLOWLINK, KDB_O_SORT, KDB_O_XMLHEADERS, kdbGetChildKeys(), kdbGetKey(), kdbRemove(), kdbSetKeys(), KEY_SWITCH_END, keyDel(), keyGetFullName(), keyNew(), ksAppend(), ksCompare(), ksCurrent(), ksDel(), ksFromXMLfile(), ksGetSize(), ksNew(), ksNext(), ksRewind(), and ksToStream().

int commandInfo  ) 
 

Business logic behind the 'kdb info' command.

Displays some information about the Elektra library, version, backend, etc.

Example:
 bash$ kdb info
See also:
kdbGetInfo(), kdbInfoToString(), kdbFreeInfo()

Definition at line 1381 of file kdb.c.

References kdbGetInfo(), KDBInfo, and kdbInfoToString().

int commandImport  ) 
 

Business logic behind the 'kdb import' command.

Import an XML file (or standard input) into the key database. This is usefull to import full application's keys, or restore backups.

Example:
 bash$ kdb import myAppDefaultKeys.xml
 bash$ generateKeys | kdb import
See also:
kdbSetKeys(), commandExport()

Definition at line 1407 of file kdb.c.

References kdbSetKeys(), keyGetFullName(), ksCurrent(), ksFromXML(), ksFromXMLfile(), ksNew(), ksNext(), and ksRewind().

int commandExport  ) 
 

Business logic behind the 'kdb export' command.

Export a set of keys to an XML format. Usefull to make backups or copy keys to other machine or user. Equivalent to 'kdb ls -xRv base/key/name'

Example:
 bash# kdb export system > systemConfigurationBackup.xml
 bash# kdb export system/sw/MyApp > myAppConfiguration.xml
 bash$ kdb export system/sw/MyApp | sed -e 's|system/sw|user/sw|g' | kdb import
See also:
commandList(), commandImport()

Definition at line 1460 of file kdb.c.

References commandList(), kdbClose(), and kdbOpen().

int commandMonitor  ) 
 

Business logic behind 'kdb mon' command.

Will block your command line until some change happens to the interested key.

Example:
 bash$ kdb mon system/sw/MyApp/someKey
See also:
kdbMonitorKey(), kdbMonitorKeys()

Definition at line 1498 of file kdb.c.

References kdbMonitorKey(), KEY_SWITCH_END, KEY_SWITCH_NEEDSYNC, KEY_SWITCH_VALUE, keyDel(), keyNew(), and keyStealValue().

int main int  argc,
char **  argv
 

Make sure kdbClose will be used

Definition at line 1578 of file kdb.c.

References kdbOpen(), and parseCommandLine().


Generated on Sun Feb 19 10:05:38 2006 for Elektra Project by  doxygen 1.3.9.1