commands.h 3.46 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
/*
 * commands.h
 */

/* lsftp, an implementation of the sftp protocol
 *
 * Copyright (C) 2001, Pontus Sköld
 * Portions of this code originately from the readline manual
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program 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
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */


#ifndef LSFTP_COMMANDS_H
#define LSFTP_COMMANDS_H
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <glob.h>
#include <limits.h>
#include <ctype.h>
#include <errno.h>
#include <grp.h>
#include <pwd.h>
#include "sftp_bind.h"
#include "dc.h"
#include "str_utils.h"
#include "misc_fun.h"
#include "gnu_stuff.h"

#define NOCOMMAND -4710
#define UNKNOWNCOMMAND -4711

#define WORDLENMAX 256

extern int mainloop; /* Flag to end mainloop */
extern int sloppy_complete;
extern int buggy_server_treshold;

/* Public functions */

int handle_command(const unsigned char *s);


/* Internal below */

int com_help(const char *arg, const char *command);
int com_longhelp(const char *arg, const char *command);
int com_about(const char *arg, const char *command);
int com_escape(const char* arg, const char *command);
int com_quit(const char *arg, const char *command);
int com_jobs(const char *arg, const char *command);

int com_close(const char *arg, const char *command);
int com_open(const char *arg, const char *command);

int com_cd(const char *arg, const char *command);
int com_rm(const char *arg, const char *command);
int com_ls(const char *arg, const char *command);
int com_pwd(const char *arg, const char *command);
int com_mv(const char *arg, const char *command);

int com_ln(const char *arg, const char *command);

int com_mkdir(const char *arg, const char *command);

int com_set(const char *arg, const char *command);
int com_mail(const char *arg, const char *command);
int com_umask(const char *arg, const char *command);

int com_get(const char *arg, const char *command);
int com_put(const char *arg, const char *command);

int com_lcd(const char *arg, const char *command);
int com_lrm(const char *arg, const char *command);
int com_lls(const char *arg, const char *command);
int com_lpwd(const char *arg, const char *command);
int com_lmv(const char *arg, const char *command);

int com_chown(const char *arg, const char *command);
int com_chgrp(const char *arg, const char *command);

enum takes_as_arg
{ 
  COMMAND,
  LOCALFILE,
  REMOTEFILE,
  NOARG,
  JOBID,
  OTHERARG
};

typedef int (*command_func)(const char *arg, const char *command);
typedef struct 
{
  char *name;                   /* User printable name of the function. */
  command_func func;            /* Function to call to do the job. */
  char *doc;                    /* Documentation for this function.  */
  char* longdoc;                /* Longer help to display for help command */
  enum takes_as_arg arg_type;
  int visible;
  int uniquelen;
} command;

extern command commands[];

#endif