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

📄 pathexec_env.c

📁 daemontools-0.76.tar.gz是在linux环境下自动监控进程的源程序
💻 C
字号:
/* Public domain. */#include "stralloc.h"#include "alloc.h"#include "str.h"#include "byte.h"#include "env.h"#include "pathexec.h"static stralloc plus;static stralloc tmp;int pathexec_env(const char *s,const char *t){  if (!s) return 1;  if (!stralloc_copys(&tmp,s)) return 0;  if (t) {    if (!stralloc_cats(&tmp,"=")) return 0;    if (!stralloc_cats(&tmp,t)) return 0;  }  if (!stralloc_0(&tmp)) return 0;  return stralloc_cat(&plus,&tmp);}void pathexec(const char *const *argv){  const char **e;  unsigned int elen;  unsigned int i;  unsigned int j;  unsigned int split;  unsigned int t;  if (!stralloc_cats(&plus,"")) return;  elen = 0;  for (i = 0;environ[i];++i)    ++elen;  for (i = 0;i < plus.len;++i)    if (!plus.s[i])      ++elen;  e = (const char **) alloc((elen + 1) * sizeof(char *));  if (!e) return;  elen = 0;  for (i = 0;environ[i];++i)    e[elen++] = environ[i];  j = 0;  for (i = 0;i < plus.len;++i)    if (!plus.s[i]) {      split = str_chr(plus.s + j,'=');      for (t = 0;t < elen;++t)	if (byte_equal(plus.s + j,split,e[t]))	  if (e[t][split] == '=') {	    --elen;	    e[t] = e[elen];	    break;	  }      if (plus.s[j + split])	e[elen++] = plus.s + j;      j = i + 1;    }  e[elen] = 0;  pathexec_run(*argv,argv,e);  alloc_free(e);}

⌨️ 快捷键说明

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