Programming Forums
User Name Password Register
 

RSS Feed
FORUM INDEX | TODAY'S POSTS | UNANSWERED THREADS | ADVANCED SEARCH

Reply
 
Thread Tools Display Modes
Old Nov 24th, 2004, 11:27 AM   #1
gautamshetty
Newbie
 
Join Date: Nov 2004
Posts: 3
Rep Power: 0 gautamshetty is on a distinguished road
I am working on a command line interpretter for linux.(I use fedora
core 1 and am coding in c).I am trying to implement the history
features for the commans typed at the command line.I am using the
<readline/readline.h> &
<readline/history.h> header files.When i try to compile the following
program (given in gnu manual) using gcc or cc compilers I get the
following error (though i have included all the necessary header
files,including the ones mentioned above:

/tmp/ccmh5Xy8.o(.text+0x25): In function `main':
: undefined reference to `using_history'
/tmp/ccmh5Xy8.o(.text+0x107): In function `main':
: undefined reference to `history_expand'
/tmp/ccmh5Xy8.o(.text+0x16d): In function `main':
: undefined reference to `add_history'
/tmp/ccmh5Xy8.o(.text+0x1f0): In function `main':
: undefined reference to `write_history'
/tmp/ccmh5Xy8.o(.text+0x220): In function `main':
: undefined reference to `read_history'
/tmp/ccmh5Xy8.o(.text+0x248): In function `main':
: undefined reference to `history_list'
/tmp/ccmh5Xy8.o(.text+0x29c): In function `main':
: undefined reference to `history_base'
/tmp/ccmh5Xy8.o(.text+0x307): In function `main':
: undefined reference to `remove_history'
collect2: ld returned 1 exit status

The program is as follows:

#include <stdio.h>
#include <readline/history.h>



main (argc, argv)
int argc;
char **argv;
{
char line[1024], *t;
int len, done = 0;

line[0] = 0;

using_history ();
while (!done)
{
printf ("history$ ");
fflush (stdout);
t = fgets (line, sizeof (line) - 1, stdin);
if (t && *t)
{
len = strlen (t);
if (t[len - 1] == '\n')
t[len - 1] = '\0';
}

if (!t)
strcpy (line, "quit");

if (line[0])
{
char *expansion;
int result;

result = history_expand (line, &expansion);
if (result)
fprintf (stderr, "%s\n", expansion);

if (result < 0 || result == 2)
{
free (expansion);
continue;
}

add_history (expansion);
strncpy (line, expansion, sizeof (line) - 1);
free (expansion);
}

if (strcmp (line, "quit") == 0)
done = 1;
else if (strcmp (line, "save") == 0)
write_history ("history_file");
else if (strcmp (line, "read") == 0)
read_history ("history_file");
else if (strcmp (line, "list") == 0)
{
register HIST_ENTRY **the_list;
register int i;

the_list = history_list ();
if (the_list)
for (i = 0; the_list[i]; i++)
printf ("%d: %s\n", i + history_base, the_list[i]->line);
}
else if (strncmp (line, "delete", 6) == 0)
{
int which;
if ((sscanf (line + 6, "%d", &which)) == 1)
{
HIST_ENTRY *entry = remove_history (which);
if (!entry)
fprintf (stderr, "No such entry %d\n", which);
else
{
free (entry->line);
free (entry);
}
}
else
{
fprintf (stderr, "non-numeric arg given to `delete'\n");
}
}
}
}

Your help will be greatly appreciated.
gautamshetty
gautamshetty is offline   Reply With Quote
Old Nov 24th, 2004, 11:45 AM   #2
Eggbert
Professional Programmer
 
Eggbert's Avatar
 
Join Date: Nov 2004
Posts: 250
Rep Power: 4 Eggbert is on a distinguished road
Do you link with -lreadline? Including headers will only supply declarations. It's the library that gives you definitions.
Eggbert is offline   Reply With Quote
Old Nov 25th, 2004, 9:59 AM   #3
gautamshetty
Newbie
 
Join Date: Nov 2004
Posts: 3
Rep Power: 0 gautamshetty is on a distinguished road
I will try it out and keep you posted.Thanks for the reply.

gautamshetty
gautamshetty is offline   Reply With Quote
Old Nov 26th, 2004, 10:29 AM   #4
gautamshetty
Newbie
 
Join Date: Nov 2004
Posts: 3
Rep Power: 0 gautamshetty is on a distinguished road
Thanks eggbert!
yeah including -lreadline worked.thanks for the help pal.
gautamshetty
gautamshetty is offline   Reply With Quote
Reply

Bookmarks

« Previous Thread in Forum | Next Thread in Forum »

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump




DaniWeb IT Discussion Community
All times are GMT -5. The time now is 12:25 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC