+++ /dev/null
-/* -*-c-*-
- *
- * Nonblocking RFC931 client
- *
- * (c) 1999 Mark Wooding
- */
-
-/*----- Licensing notice --------------------------------------------------*
- *
- * This file is part of the mLib utilities library.
- *
- * mLib 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.
- *
- * mLib 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 mLib; if not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- * MA 02111-1307, USA.
- */
-
-#ifndef MLIB_IDENT_H
-#define MLIB_IDENT_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/*----- Header files ------------------------------------------------------*/
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#ifndef MLIB_CONN_H
-# include "conn.h"
-#endif
-
-#ifndef MLIB_SEL_H
-# include "sel.h"
-#endif
-
-#ifndef MLIB_SELBUF_H
-# include "selbuf.h"
-#endif
-
-/*----- Data structures ---------------------------------------------------*/
-
-/* --- Parsed response from ident server --- */
-
-typedef struct ident_reply {
- unsigned short sport, dport; /* Source and destination ports */
- unsigned type; /* Type of reply from server */
- union {
- struct {
- char *os; /* Operating system name */
- char *user; /* User name */
- } userid;
- char *error; /* Error message from server */
- } u;
-} ident_reply;
-
-/* --- Response type codes --- */
-
-enum {
- IDENT_USERID,
- IDENT_ERROR,
- IDENT_BAD
-};
-
-/* --- Request structure --- */
-
-typedef struct ident_request {
- struct sockaddr_in local, remote;
- unsigned state;
- void (*func)(ident_reply */*i*/, void */*p*/);
- void *p;
- sel_state *s;
- conn c;
- selbuf b;
-} ident_request;
-
-enum {
- IDENT_CONN,
- IDENT_READ,
- IDENT_DONE
-};
-
-/*----- Functions provided ------------------------------------------------*/
-
-/* --- @ident_abort@ --- *
- *
- * Arguments: @ident_request *rq@ = pointer to request block
- *
- * Returns: ---
- *
- * Use: Cancels an ident request in progress.
- */
-
-extern void ident_abort(ident_request */*rq*/);
-
-/* --- @ident@ --- *
- *
- * Arguments: @ident_request *rq@ = pointer to request block
- * @sel_state *s@ = I/O multiplexor
- * @const struct sockaddr_in *local, *remote@ = addresses
- * @void (*func)(ident_reply *i, void *p)@ = handler function
- * @void *p@ = argument for handler
- *
- * Returns: ---
- *
- * Use: Initializes an ident request.
- */
-
-extern void ident(ident_request */*rq*/, sel_state */*s*/,
- const struct sockaddr_in */*local*/,
- const struct sockaddr_in */*remote*/,
- void (*/*func*/)(ident_reply */*i*/, void */*p*/),
- void */*p*/);
-
-/* --- @ident_socket@ --- *
- *
- * Arguments: @ident_request *rq@ = pointer to request block
- * @sel_state *s@ = I/O multiplexor
- * @int sk@ = connected socket file descriptor
- * @void (*func)(ident_reply *i, void *p)@ = handler function
- * @void *p@ = argument for handler
- *
- * Returns: ---
- *
- * Use: An alternative interface to @ident@. Initializes an ident
- * request from a connected socket, rather than from an explicit
- * address. This will call @getsockname@ and @getpeername@ to
- * find out what the socket is actually connected to, which adds
- * convenience but wastes time.
- */
-
-extern void ident_socket(ident_request */*rq*/, sel_state */*s*/, int /*sk*/,
- void (*/*func*/)(ident_reply */*i*/, void */*p*/),
- void */*p*/);
-
-/*----- That's all, folks -------------------------------------------------*/
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif