You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
3.5 KiB

/*
* $Id: connect.c,v 1.60 2006/10/12 14:21:22 desrod Exp $
*
* connect.c: Palm Serial, USB, IR connection routines
*
* Copyright (c) 2001, David A. Desrosiers
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
* General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#ifdef HAVE_IFADDRS_H
#include <ifaddrs.h>
#endif
#include <unistd.h>
#include <sys/stat.h>
#include "pi-socket.h"
#include "pi-dlp.h"
#include "pi-header.h"
/***********************************************************************
*
* Function: pilot_connect [DEPRECATED]
*
* Summary: Connect to a Palm device.
*
* Parameters: port. Communications port through which the Palm device is
* connected.
*
* Returns: Socket descriptor of type 'client_sd', if successful.
* Returns 1, if the connection can not be established.
*
* 'port' is allowed to be NULL for the pi_bind call because pi_bind will
* check your PILOTPORT environment variable. If port is NULL and the
* attempt to connect fails for any reason, we simply assume the user didn't
* provide one, because pilot_connect doesn't have a way of knowing, for the
* time being.
*
* This function is deprecated because it doesn't really belong in libpisock.
* It will remain at least until it has been properly replaced.
*
***********************************************************************/
int
pilot_connect(const char *port)
{
int sd = -1, /* Socket, formerly parent/client_socket */
result;
struct SysInfo sys_info;
fprintf(stderr, "\n");
fprintf(stderr," DEPRECATED: The application is calling pilot_connect()\n");
if ((sd = pi_socket(PI_AF_PILOT,
PI_SOCK_STREAM, PI_PF_DLP)) < 0) {
fprintf(stderr, "\n Unable to create socket '%s'\n", port);
return -1;
}
result = pi_bind(sd, port);
if (result < 0) {
if (port == NULL)
fprintf(stderr, " No port specified\n");
else
fprintf(stderr, " Unable to bind to port: %s\n", port);
fprintf(stderr, " Please use --help for more information\n\n");
return result;
}
if (isatty(fileno(stdout))) {
printf("\n Listening for incoming connection on %s... ",
port);
fflush(stdout);
}
if (pi_listen(sd, 1) < 0) {
fprintf(stderr, "\n Error listening on %s\n", port);
pi_close(sd);
return -1;
}
sd = pi_accept(sd, 0, 0);
if (sd < 0) {
fprintf(stderr, "\n Error accepting data on %s\n", port);
pi_close(sd);
return -1;
}
if (isatty(fileno(stdout))) {
printf("connected!\n\n");
}
if (dlp_ReadSysInfo(sd, &sys_info) < 0) {
fprintf(stderr, "\n Error read system info on %s\n", port);
pi_close(sd);
return -1;
}
dlp_OpenConduit(sd);
return sd;
}
/* vi: set ts=8 sw=4 sts=4 noexpandtab: cin */
/* ex: set tabstop=4 expandtab: */
/* Local Variables: */
/* indent-tabs-mode: t */
/* c-basic-offset: 8 */
/* End: */