⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uuport.c

📁 汇编源代码大全
💻 C
字号:
/*--------------------------------------------------------------------*/
/*    u u p o r t . c                                                 */
/*                                                                    */
/*    suspend/resume uupoll/uucico daemon (for OS/2)                  */
/*                                                                    */
/*    Author: Kai Uwe Rommel                                          */
/*--------------------------------------------------------------------*/

/*--------------------------------------------------------------------*/
/*       Copyright (c) 1993 by Kai Uwe Rommel                         */
/*--------------------------------------------------------------------*/

/*--------------------------------------------------------------------*/
/*       Changes Copyright (c) 1989-1993 by Kendra Electronic         */
/*       Wonderworks.                                                 */
/*                                                                    */
/*       All rights reserved except those explicitly granted by       */
/*       the UUPC/extended license agreement.                         */
/*--------------------------------------------------------------------*/

/*--------------------------------------------------------------------*/
/*                          RCS Information                           */
/*--------------------------------------------------------------------*/

/*
 *    $Id: uuport.c 1.3 1993/10/01 02:36:45 dmwatt Exp $
 *
 *    Revision history:
 *    $Log: uuport.c $
 * Revision 1.3  1993/10/01  02:36:45  dmwatt
 * Correct increment of pointer to pipe name
 *
 * Revision 1.2  1993/09/29  04:49:20  ahd
 * Use standard port name
 *
 */

/* see uucico\suspend2.c for description */

/* exit codes:
 *   0 = success
 *   1 = incorrect usage of uuport
 *   2 = no uucico running on that port
 *   3 = communication error between uuport and the uucico
 *   4 = error, uucico cannot currently be suspended
 */

/*--------------------------------------------------------------------*/
/*                        System include files                        */
/*--------------------------------------------------------------------*/

#include <stdlib.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <string.h>
#include <ctype.h>

/*--------------------------------------------------------------------*/
/*                    UUPC/extended include files                     */
/*--------------------------------------------------------------------*/

#include "lib.h"
#include "timestmp.h"
#define  NO_SUSPEND_FUNCTIONS
#include "suspend.h"

/*--------------------------------------------------------------------*/
/*       u s a g e                                                    */
/*                                                                    */
/*       Report program usage                                         */
/*--------------------------------------------------------------------*/

static void usage(const char *program)
{
  printf("Usage:\t%s\t[-sr] [\\\\server\\]portname\n", program);
  exit(1);

} /* usage */

/*--------------------------------------------------------------------*/
/*       m a i n                                                      */
/*                                                                    */
/*       Main program, of course                                      */
/*--------------------------------------------------------------------*/

int main(int argc, char **argv)
{
  int file;
  char name[64], pipe[FILENAME_MAX];
  char *ptr, cmd = 'Q';

  banner( argv );

  if ( argc != 2 && argc != 3 )
    usage(argv[0]);

  if ( argv[1][0] != '-' )
    strcpy(name, argv[1]);
  else
  {
    if ( argv[1][2] != 0 )
      usage(argv[0]);

    switch ( tolower(argv[1][1]) )
    {
       case 's':
         cmd = 'S';
         break;
       case 'r':
         cmd = 'R';
         break;
       default:
         usage(argv[0]);
    }

    strcpy(name, argv[2]);
  }

  if ( strncmp(name, "\\\\", 2) == 0 )  /* server specified ? */
  {
    ptr = name + 2;

    if ( (ptr = strchr(ptr, '\\')) == NULL )
    {
      printf("invalid port '%s' specified.\n", name);
      return 1;
    }

    *ptr++ = '\0';
    strcpy(pipe, name);
    strcat(pipe, SUSPEND_PIPE );
    strcat(pipe, ptr);
  }
  else
  {
    strcpy(pipe, SUSPEND_PIPE );
    strcat(pipe, name);
  }

  if ( (file = open(pipe, O_RDWR, 0)) == -1 )
  {
    printf("No port '%s' currently used by any uucico.\n", name);
    return 2;
  }

  if ( cmd != 'Q' )
    printf("Waiting for uucico on port '%s' to %s ... ",
           name, cmd == 'S' ? "suspend" : "resume");

  if ( write(file, &cmd, 1) != 1 )
  {
    printf("\nError sending message to uucico.\n");
    return 3;
  }
  if ( read(file, &cmd, 1) != 1 )
  {
    printf("\nError reading message from uucico.\n");
    return 3;
  }

  close(file);

  switch ( cmd )
  {
     case 'O':
       printf("OK\n");
       break;
     case 'S':
       printf("uucico on port '%s' is suspended.\n", name);
       break;
     case 'R':
       printf("uucico on port '%s' is active.\n", name);
       break;
     default:
       printf("FAILED\n");
       return 4;
  }

  return 0;

} /* main */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -