tsearch(3C) problem
pefv700 at perv.pe.utexas.edu
pefv700 at perv.pe.utexas.edu
Thu Mar 28 07:08:35 AEST 1991
I am trying to use the tsearch(3C) routines tsearch, tfind, and tdelete. I
first call tsearch (Recall: char *tsearch((char *)key, (char **)rootp, compar))
with the following for "key" and "rootp"
(dbx) ex *saveitem
*saveitem = {
ut_line = "ftp18903"
ut_name = ""
ut_host = ""
ut_time = 670105915
(dbx) ex root
root = (nil)
if ((matchitem = (struct utmp *)tsearch((char *)saveitem,
(char **)&root, linecmp)) == (struct utmp *)NULL) {
The results of the call are that matchitem is the same as root:
(dbx) ex root
root = 0x4df0
(dbx) ex matchitem
matchitem = 0x4df0
(dbx) ex *root
*root = {
ut_line = "wk "
ut_name = ""
ut_host = ""
ut_time = 0
}
A subsequent tfind with the same ut_line member as in *saveitem above (so that
linecmp(saveitem, &wtbuf) returns 0)
if ((matchitem = (struct utmp *)tfind((char *)&wtbuf,
(char **)&root, linecmp)) != (struct utmp *)NULL) {
results in:
(dbx) ex matchitem
matchitem = 0x4df0
(dbx) ex *matchitem
*matchitem = {
ut_line = "wk "
ut_name = ""
ut_host = ""
ut_time = 8
}
Well, it returned it as it was before (except for the 8) but it's obviously
not doing what I want it to do. Any ideas?
Chris
More information about the Comp.unix.programmer
mailing list