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

📄 escape.c

📁 Linux下进程监控相关源代码
💻 C
字号:
/* * Copyright 1998 by Albert Cahalan; all rights resered.          * This file may be used subject to the terms and conditions of the * GNU Library General Public License Version 2, or any later version   * at your option, as published by the Free Software Foundation. * 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 Library General Public License for more details. */                                 #include <sys/types.h>/* sanitize a string, without the nice BSD library function:     *//* strvis(vis_args, k->ki_args, VIS_TAB | VIS_NL | VIS_NOSLASH)  */int octal_escape_str(char *dst, const char *src, size_t n){  unsigned char c;  char d;  size_t i;  const char *codes =  "Z------abtnvfr-------------e----"  " *******************************"  /* better: do not print any space */  "****************************\\***"  "*******************************-"  "--------------------------------"  "********************************"  "********************************"  "********************************";  for(i=0; i<n;){    c = (unsigned char) *(src++);    d = codes[c];    switch(d){    case 'Z':      goto leave;    case '*':      i++;      *(dst++) = c;      break;    case '-':      if(i+4 > n) goto leave;      i += 4;      *(dst++) = '\\';      *(dst++) = "01234567"[c>>6];      *(dst++) = "01234567"[(c>>3)&07];      *(dst++) = "01234567"[c&07];      break;    default:      if(i+2 > n) goto leave;      i += 2;      *(dst++) = '\\';      *(dst++) = d;      break;    }  }leave:  *(dst++) = '\0';  return i;}/* sanitize a string via one-way mangle */int simple_escape_str(char *dst, const char *src, size_t n){  unsigned char c;  size_t i;  const char *codes =  "Z-------------------------------"  "********************************"  "********************************"  "*******************************-"  "--------------------------------"  "********************************"  "********************************"  "********************************";  for(i=0; i<n;){    c = (unsigned char) *(src++);    switch(codes[c]){    case 'Z':      goto leave;    case '*':      i++;      *(dst++) = c;      break;    case '-':      i++;      *(dst++) = '?';      break;    }  }leave:  *(dst++) = '\0';  return i;}/* sanitize a string for HTML */int html_escape_str(char *dst, const char *src, size_t n){  unsigned char c;  size_t i;  const char *codes =  "Z-------------------------------"  "**q***&*********************<*>*"  "********************************"  "*******************************-"  "--------------------------------"  "********************************"  "********************************"  "********************************";  for(i=0; i<n;){    c = (unsigned char) *(src++);    switch(codes[c]){    case 'Z':      goto leave;    case '*':      i++;      *(dst++) = c;      break;    case '-':      i++;      *(dst++) = '?';      break;    case '&':      if(i+5 > n) goto leave;      i += 5;      *(dst++) = '&';      *(dst++) = 'a';      *(dst++) = 'm';      *(dst++) = 'p';      *(dst++) = ';';      break;    case '<':      if(i+4 > n) goto leave;      i += 4;      *(dst++) = '&';      *(dst++) = 'l';      *(dst++) = 't';      *(dst++) = ';';      break;    case '>':      if(i+4 > n) goto leave;      i += 4;      *(dst++) = '&';      *(dst++) = 'g';      *(dst++) = 't';      *(dst++) = ';';      break;    case 'q':      if(i+6 > n) goto leave;      i += 6;      *(dst++) = '&';      *(dst++) = 'q';      *(dst++) = 'u';      *(dst++) = 'o';      *(dst++) = 't';      *(dst++) = ';';      break;    }  }leave:  *(dst++) = '\0';  return i;}/* escape a string as desired */int escape_str(char *dst, const char *src, size_t n){  return simple_escape_str(dst, src, n);}/* escape an argv or environment string array */int escape_strlist(char *dst, const char **src, size_t n){  size_t i = 0;  while(*src){    i += simple_escape_str(dst+i, *src, n-i);    if((n-i > 1) && (*(src+1))) dst[i++] = ' ';    src++;  }  return i;}

⌨️ 快捷键说明

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