URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [branches/] [oc/] [gdb-5.0/] [readline/] [examples/] [manexamp.c] - Rev 1765
Compare with Previous | Blame | View Log
/* manexamp.c -- The examples which appear in the documentation are here. */ #include <stdio.h> #include <readline/readline.h> /* **************************************************************** */ /* */ * How to Emulate gets () */ /* */ /* **************************************************************** */ /* A static variable for holding the line. */ static char *line_read = (char *)NULL; /* Read a string, and return a pointer to it. Returns NULL on EOF. */ char * rl_gets () { /* If the buffer has already been allocated, return the memory to the free pool. */ if (line_read) { free (line_read); line_read = (char *)NULL; } /* Get a line from the user. */ line_read = readline (""); /* If the line has any text in it, save it on the history. */ if (line_read && *line_read) add_history (line_read); return (line_read); } /* **************************************************************** */ /* */ /* Writing a Function to be Called by Readline. */ /* */ /* **************************************************************** */ /* Invert the case of the COUNT following characters. */ invert_case_line (count, key) int count, key; { register int start, end; start = rl_point; if (count < 0) { direction = -1; count = -count; } else direction = 1; /* Find the end of the range to modify. */ end = start + (count * direction); /* Force it to be within range. */ if (end > rl_end) end = rl_end; else if (end < 0) end = -1; if (start > end) { int temp = start; start = end; end = temp; } if (start == end) return; /* Tell readline that we are modifying the line, so save the undo information. */ rl_modifying (start, end); for (; start != end; start += direction) { if (uppercase_p (rl_line_buffer[start])) rl_line_buffer[start] = to_lower (rl_line_buffer[start]); else if (lowercase_p (rl_line_buffer[start])) rl_line_buffer[start] = to_upper (rl_line_buffer[start]); } /* Move point to on top of the last character changed. */ rl_point = end - direction; }