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

📄 snapdis.c

📁 一个学习SNMP项目:tmoerlan.
💻 C
字号:
/* snap-1.0. Copyright (C) 2000 by Jonathan T. Moore and Michael Hicks. * * snapdis.c : SNAP disassembler. Goes from wire-format back to *   (ascii) SNAP assembly language. * * $Id: snapdis.c,v 1.2 2003/09/17 11:26:10 tmoerlan Exp $ */#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include "../lib/bytecode.h"#include "../lib/packet.h"#include "../lib/io.h"#include "../lib/memalloc.h"#include "../lib/d_printf.h"int infd;			/* input file descriptor */FILE *outfile;         		/* output file pointer */extern char *basename(const char *);void parse_cmdline(int argc, char **argv);int main(int argc, char **argv) {  buffer_t buf;  packet_t *p;  int packet_lenb;  d_printf(10,"%s:%d: starting up\n",__FILE__,__LINE__);  outfile = stdout;  parse_cmdline(argc,argv);  packet_lenb = file_to_str(infd,&buf);  p = unmarshal_packet(buf.s,packet_lenb,buf.lenb);  if (p != NULL) {    fprintf_packet(outfile,p);    fflush(outfile);    return(0);  }  else    return(1);}void usage(int argc, char **argv) {  printf("usage: %s [-?] [-o outfile] infile\n",basename(argv[0]));  printf("\t-? : print this help\n");  printf("\t-o : set the output file name (default = stdout)\n");}void parse_cmdline(int argc, char **argv) {  char *opts = "?o:";  char c;  int args_expected = 1;  int args_processed = 0;  int argidx;  char *outfilename;  char *infilename;  while((c = getopt(argc,argv,opts)) != EOF) {    switch(c) {    case '?':      usage(argc,argv);      exit(1);    case 'o':      outfilename = optarg;      if (strcmp(outfilename,"-") != 0) {	outfile = fopen(outfilename,"w");	if (outfile == NULL) {	  fprintf(stderr,"%s: unable to open file \"%s\" for output\n",		  basename(argv[0]),outfilename);	  fflush(stderr);	  exit(1);	}      }      break;    }  }  argidx = optind;  while(args_processed < args_expected) {    if (argidx >= argc) {      /* missing arguments */      printf("%s: missing argument(s)\n",basename(argv[0]));      usage(argc,argv);      exit(1);    }    switch(args_processed) {    case 0:      infilename = argv[argidx];      if (strcmp(infilename,"-") != 0) {	infd = open(infilename,O_RDONLY);	if (infd < 0) {	  fprintf(stderr,"%s: unable to open file \"%s\" for input\n",		  basename(argv[0]),infilename);	  fflush(stderr);	  exit(1);	}      }      break;    }    argidx++;    args_processed++;  }  if (argidx < argc) {    /* extra arguments */    printf("%s: extra argument(s)\n",basename(argv[0]));    usage(argc,argv);    exit(1);  }  return;}

⌨️ 快捷键说明

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