lsrpm

来自「一个C格式的脚本处理函数库源代码,可让你的C程序具有执行C格式的脚本文件」· 代码 · 共 86 行

TXT
86 行
字号
#! /usr/bin/env slsh% Generate a listing of an RPM filestatic define pgm_usage (){   vmessage ("Usage: lsrpm FILENAME");   exit (1);}static variable RPM_Command = "rpm -q -l --dump -p ";static define exit_error (msg){   () = fprintf (stderr, "%s\n", msg);   exit (1);}static define run_rpm (file){   variable fp;   variable lines;   variable months =      ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",      "Oct", "Nov", "Dec"];   variable s;   fp = popen (RPM_Command + file, "r");   if (fp == NULL)     exit_error ("Failed to open RPM process");      % each line contains:    % path size mtime md5sum mode owner group isconfig isdoc rdev symlink      variable six_months_ago = _time () - 3600*24*30*6;      foreach (fp)     {	variable path, size, mode, owner, group, symlink, mtime;	variable mstring;	variable tm;	s = ();	s = strchop (strtrim_end (s, "\n"), ' ', 0);		path = s[0];	size = s[1];	mtime = integer (s[2]);	mode = integer (s[4]);	owner = s[5];	group = s[6];	tm = localtime (mtime);	if (mtime < six_months_ago)	  mtime = sprintf ("%s %2d %4d", 			   months[tm.tm_mon],			   tm.tm_mday,			   1900 + tm.tm_year);	else	  mtime = sprintf ("%s %2d % 2d:%02d",			   months[tm.tm_mon],			   tm.tm_mday,			   tm.tm_hour,			   tm.tm_min);			   	symlink = "";	if (stat_is ("lnk", mode))	  symlink = " -> " + s[10];		mstring = stat_mode_to_string (mode);	if (-1 == fprintf (stdout,			   "%8s %8s %8s %10s %s %s%s\n",			   mstring, owner, group, size, mtime, path, symlink))	  exit_error (sprintf ("Write failed: %s", errno_string (errno)));     }   () = pclose (fp);}if (__argc != 2)  pgm_usage ();run_rpm (__argv[1]);exit (0);

⌨️ 快捷键说明

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