Again, it is not worth the compatibility trouble it causes. It's much
better to implement such functionality with a bash script or similar.
Also, add Gerd Becker to CREDITS and mention that paraslash compiles
under MacOS.
Karl Bartel <karlb@gmx.net> (SFont)
Karl Bartel <karlb@gmx.net> (SFont)
+Gerd Becker <gerd.mac@gmx.net> (MacOs testing)
+
Lorenzo Bettini <bettini@dsi.unifi.it> (gengetopt)
Ricardo Cerqueira <rmc@rccn.net> (mp3info)
Lorenzo Bettini <bettini@dsi.unifi.it> (gengetopt)
Ricardo Cerqueira <rmc@rccn.net> (mp3info)
selector, mp3/ogg support, http/dccp/ortp support) is about 110K
on i386 under Linux. para_audiod is even smaller.
selector, mp3/ogg support, http/dccp/ortp support) is about 110K
on i386 under Linux. para_audiod is even smaller.
-command line interface, including shell:
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- para_client without arguments starts interactive (shell)
- mode. Otherwise, command is sent to para_server directly
- and output is dumped to stdout. This can be used by any
- scripting language to produce user interfaces with little
- programming effort.
+command line interface:
+~~~~~~~~~~~~~~~~~~~~~~~
+ paraslash commands are sent to para_server and the response is
+ dumped to stdout. This can be used by any scripting language
+ to produce user interfaces with little programming effort.
authentication/encryption via openssl:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
authentication/encryption via openssl:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$(CC) $(slider_objs) -o $@ @GTK_LIBS@ @GLIB_LIBS@ -lzmw
para_client: $(client_objs)
$(CC) $(slider_objs) -o $@ @GTK_LIBS@ @GLIB_LIBS@ -lzmw
para_client: $(client_objs)
- $(CC) -o $@ $(client_objs) $(SSL_LDFLAGS) -lreadline -lncurses $(SSL_LIBS)
+ $(CC) -o $@ $(client_objs) $(SSL_LDFLAGS) $(SSL_LIBS)
para_gui: @gui_objs@
$(CC) -o $@ @gui_objs@ -lncurses
para_gui: @gui_objs@
$(CC) -o $@ @gui_objs@ -lncurses
o update to gengetopt-2.17
o update to gengetopt-2.17
+ o para_client no longer depends on libreadline (as the
+ code for the interactive mode was removed).
+
+ o paraslash compiles under Mac Os (thanks to Gerd Becker)
+
0.2.11 (2006-03-11) "atomic duality"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0.2.11 (2006-03-11) "atomic duality"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include "para.h"
#include "config.h"
#include "para.h"
#include "config.h"
-#include <readline/readline.h>
-#include <readline/history.h>
#include "client.cmdline.h"
#include "crypt.h"
#include "rc4.h"
#include "client.cmdline.h"
#include "crypt.h"
#include "rc4.h"
#include "net.h"
#include "string.h"
#include "net.h"
#include "string.h"
-/* A static variable for holding the line. */
-static char *line_read;
-
struct gengetopt_args_info args_info;
/*
struct gengetopt_args_info args_info;
/*
-/*
- * Read a string, and return a pointer to it. Returns NULL on EOF.
- */
-static char *rl_gets(void)
-{
- free(line_read);
- /* Get a line from the user. */
- line_read = readline("para_client> ");
- /* 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;
-}
-
-/*
- * do several cleanups on sigint
- */
-static void sigint_handler(__a_unused int i)
-{
- rl_cleanup_after_signal();
- rl_reset_after_signal();
-}
-
void get_options(int argc, char *argv[],
char **config_file, char **key_file)
{
void get_options(int argc, char *argv[],
char **config_file, char **key_file)
{
int main(int argc, char *argv[])
{
int main(int argc, char *argv[])
{
- int sockfd, numbytes, i, interactive, received, ret;
+ int sockfd, numbytes, i, received, ret;
struct hostent *he;
struct sockaddr_in their_addr;
char *command = NULL;
struct hostent *he;
struct sockaddr_in their_addr;
char *command = NULL;
char *auth_str;
char *key_file, *config_file;
long unsigned challenge_nr;
char *auth_str;
char *key_file, *config_file;
long unsigned challenge_nr;
get_options(argc, argv, &config_file, &key_file);
if (args_info.loglevel_arg <= NOTICE)
get_options(argc, argv, &config_file, &key_file);
if (args_info.loglevel_arg <= NOTICE)
args_info.hostname_arg,
args_info.server_port_arg
);
args_info.hostname_arg,
args_info.server_port_arg
);
- interactive = args_info.inputs_num == 0? 1 : 0;
- if (interactive) {
- PARA_NOTICE_LOG("%s", "no command, entering interactive mode\n");
- signal(SIGINT, sigint_handler);
- } else {
- /* not interactive, concat args */
- for (i = 0; i < args_info.inputs_num; i++)
- append_str(&command, args_info.inputs[i]);
+ if (!args_info.inputs_num) {
+ PARA_ERROR_LOG("%s", "syntax error\n");
+ exit(EXIT_FAILURE);
+ /* concat args */
+ for (i = 0; i < args_info.inputs_num; i++)
+ append_str(&command, args_info.inputs[i]);
+
crypt_function_recv = NULL;
crypt_function_send = NULL;
crypt_function_recv = NULL;
crypt_function_send = NULL;
- if (interactive) {
- int i = 0;
- char *p;
-
- rl_save_prompt();
- rl_message("\n");
- rl_kill_full_line(0, 0);
- rl_free_line_state();
- /* read a line via readline */
- line = rl_gets();
- if (!line)
- return 0;
- if (!line[0])
- goto interactive_loop;
- p = line;
- while (sscanf(p, "%200s%n", buf, &i) == 1) {
- append_str(&command, buf);
- p += i;
- }
- }
/* get the host info */
PARA_NOTICE_LOG("getting host info of %s\n",
args_info.hostname_arg);
/* get the host info */
PARA_NOTICE_LOG("getting host info of %s\n",
args_info.hostname_arg);
if (!numbytes)
PARA_NOTICE_LOG("%s", "connection closed by peer\n");
close(sockfd);
if (!numbytes)
PARA_NOTICE_LOG("%s", "connection closed by peer\n");
close(sockfd);
- if (interactive)
- goto interactive_loop;
AC_CHECK_LIB([ncurses], [initscr], [],
[AC_MSG_ERROR([libncurses not found])])
AC_CHECK_LIB([ncurses], [initscr], [],
[AC_MSG_ERROR([libncurses not found])])
-AC_CHECK_LIB([readline], [readline], [],
- [AC_MSG_ERROR([libreadline not found])])
AC_CHECK_LIB([menu], [new_menu], [extras="$extras para_dbadm"],
[AC_MSG_WARN([libmenu not found, cannot build para_dbadm])])
AC_CHECK_LIB([menu], [new_menu], [extras="$extras para_dbadm"],
[AC_MSG_WARN([libmenu not found, cannot build para_dbadm])])