예제 #1
0
int main ()
{
    char **initialEnv = environ;

    g_cgi_cfg = new CCgiCfg("/data/server/cgi-bin/sh/cgi_cfg.txt");

    while (FCGI_Accept() >= 0)
    {
        CIfBase* ifobj = CIfFactory::getIfObj();
        if(ifobj == NULL)
        {
            LogError("error_env_platform", "");
            continue;
        }

        ifobj->SetServName(my_getenv("SERVER_NAME"));
        char* pszReq = my_getenv("QUERY_STRING");
        ifobj->login(pszReq);
        delete ifobj;
    }

    delete (CWorldBase*)g_pTheWorld;

    return 0;
}
예제 #2
0
파일: set_pwd.c 프로젝트: cohen-h/projects
int	set_pwd(char ***env, char *path)
{
  char	*final_pwd;
  char	**command;
  int	i;

  i = (strncmp(path, "~/", 2) == 0) ? 1 : 0;
  if (i == 1 || (strncmp(path, "~\0", 2) == 0))
    {
      if (!(final_pwd = my_strdog(my_getenv(*env, "HOME"), "/")))
	return (1);
    }
  else if (path[0] == '/')
    {
      if (!(final_pwd = strdup("/")))
	return (-1);
    }
  else
    if (!(final_pwd = my_strdog(my_getenv(*env, "PWD"), "/")))
      return (1);
  if (!(command = my_str_to_wordtab2(path, "/")))
    return (1);
  final_pwd = set_pwd_loop(command, final_pwd, i);
  builtin_setenv(env, "PWD", final_pwd);
  free(final_pwd);
  return (1);
}
예제 #3
0
static char     *my_cd_back(char *path, char **env)
{
  char          *tmp;
  char          *home;
  char          *pwd;
  char          *oldpwd;

  tmp = NULL;
  oldpwd = my_getenv(env, "OLDPWD");
  if (my_strcmp(path, "-") == 0)
    {
      tmp = my_strdup(oldpwd);
      my_putpath(env, my_realpath(tmp), 1);
    }
  else if (my_strcmp(path, "--") == 0)
    {
      pwd = my_getenv(env, "PWD");
      home = my_getenv(env, "HOME");
      if (my_strncmp(pwd, home, my_strlen(home)) == 0)
        tmp = my_strdup(home);
      else
        tmp = my_strdup("/");
    }
  return (tmp);
}
예제 #4
0
파일: input.c 프로젝트: ronanboiteau/42sh
static void	put_prompt(char **env, t_uchar ret)
{
  char		*user;
  char		*pwd;
  char		pwd_prefix[2];
  char		*home;

  pwd_prefix[0] = '\0';
  pwd_prefix[1] = '\0';
  user = my_getenv(env, "USER="******"USERNAME="******"PWD=");
  home = my_getenv(env, "HOME=");
  if (my_strncmp(pwd, home, my_strlen(home)) == 0 && my_strlen(pwd) > 1)
    {
      pwd_prefix[0] = '~';
      pwd += my_strlen(home);
    }
  my_printf(GREEN "%s" RESET ":" YELLOW "%s%s\n" RESET,
	    user, pwd_prefix, pwd);
  if (ret == 0)
    my_printf("[" GREEN ":)" RESET "]");
  else
    my_printf("[" RED ":(" RESET "]");
  my_printf(" $> ");
  return ;
}
예제 #5
0
int	unsetenv_manager(t_manage *man, char *cmd)
{
  int	pos;
  char	**d_cmd;
  char	**d_all;
  int	i;
  int	nb_of_args;
  int	j;

  i = -1;
  j = 1;
  d_all = my_str_to_wordtab(cmd, ' ');
  while (d_all[++i])
    {
      pos = 0;
      if ((nb_of_args = wordtab_count(d_all)) == 1)
	{
	  err_report(3, "NULL");
	  return (-1);
	}
      d_cmd = get_args(cmd);
      if ((pos = my_getenv(man->all_env->my_env, d_cmd[j])) == -1)
	return (-1);
      man->all_env->my_env = d_tab_unset_doc(man->all_env->my_env, pos - 1);
      j = j + 1;
    }
  return (0);
}
예제 #6
0
int	check_cd(t_mysh *ptr, int flag)
{
  DIR	*dir;
  char	*line;

  if (my_getenv("PWD", ptr) == 0)
    return (3);
  if ((line = my_strcat_three(ptr->recup_getenv, "/", ptr->param[1])) == NULL)
    return (3);
  if (flag == 1)
    if (access(line, X_OK))
      dir = opendir(line);
  if (flag == 0)
    if (access(line, X_OK))
      {
	free(line);
	if ((dir = opendir(ptr->param[1])) == NULL)
	  {
	    my_printf("Error with opendir, please check your directory\n");
	    return (3);
	  }
	else
	  return (1);
      }
  free(line);
  return (1);
}
예제 #7
0
파일: afni_environ.c 프로젝트: afni/rmafni
int THD_ok_overwrite(void)  /* Jan 2008 */
{
   char *ppp=my_getenv("AFNI_DECONFLICT");
   if( force_ok_overwrite ) return 1 ;
   if (ppp && strcmp(ppp,"OVERWRITE")==0) return 1;
   return 0;
}
예제 #8
0
void	execution(char **tabb, t_env *chaine_env)
{
  int	j;
  char	**path;
  char	*str;
  char	**env;
  char	*value_path;

  j = 0;
  env = tab_env(chaine_env);
  if ((tabb[0][0] == '.' || tabb[0][0] == '/') && access(tabb[0], R_OK) == 0)
    execve(tabb[0], tabb, env);
  else if ((value_path = my_getenv("PATH", chaine_env)) != NULL)
    {
      path = my_str_to_wordtab(value_path, ':');
      while (path[j] != NULL)
        {
	  str = my_complete_str(path[j], tabb[0]);
          if (access(str, R_OK) == 0)
            execve(str, tabb, env);
          j++;
          xfree(str);
        }
    }
  printf("42sh: command not found : %s\n", tabb[0]);
  exit(-1);
}
예제 #9
0
파일: afni_environ.c 프로젝트: afni/rmafni
int AFNI_noenv( char *ename )     /* 21 Jun 2000 */
{
   char *ept ;
   if( ename == NULL ) return 0 ;
   ept = my_getenv(ename) ;
   return NOISH(ept) ;
}
예제 #10
0
int             my_cd(t_datas *datas, char **cmd)
{
  int           res;
  char          *path;
  char          *pwd;

  res = 0;
  if (my_cd_usage(cmd) < 0)
    return (-1);
  path = my_cd_realpath(cmd[1], datas->env);
  if (path == NULL && my_strncmp(cmd[1], "~", 1) == 0)
    return (my_error(cmd[0], "no such file or directory", cmd[1]));
  if (path == NULL)
    return (my_error(cmd[0], "memory allocation failed.", NULL));
  res = my_cd_check(path);
  if (res == 0)
    {
      pwd = my_getenv(datas->env, "PWD");
      res = my_sys_setenv(datas, "cd", "OLDPWD", pwd);
    }
  if (res == 0)
    res = my_sys_setenv(datas, "cd", "PWD", path);
  free((char *)path);
  return (res);
}
예제 #11
0
파일: cd.c 프로젝트: oleiade/Ash
int		to_pwd(char *dir, char *line, t_sllist *myenv)
{
  strcpy(dir, my_getenv("PWD", myenv));
  strcat(dir, "/");
  strcat(dir, line);
  return (0);
}
예제 #12
0
static void mri_warp3D_align_edging_default( int  nx   , int  ny   , int  nz   ,
                                             int *xfade, int *yfade, int *zfade )
{
   char *ef=my_getenv("AFNI_VOLREG_EDGING") , *eq ;

   if( ef == NULL ){                  /* the 5% solution */
     *xfade = (int)(0.05*nx+0.5) ;
     *yfade = (int)(0.05*ny+0.5) ;
     *zfade = (int)(0.05*nz+0.5) ;
   } else {
     float ff = strtod(ef,&eq) ;
     if( ff < 0 ){                   /* again, 5% */
       *xfade = (int)(0.05*nx+0.5) ;
       *yfade = (int)(0.05*ny+0.5) ;
       *zfade = (int)(0.05*nz+0.5) ;
     } else {
       if( *eq == '%' ){            /* the whatever % solution */
         *xfade = (int)(0.01*ff*nx+0.5) ;
         *yfade = (int)(0.01*ff*ny+0.5) ;
         *zfade = (int)(0.01*ff*nz+0.5) ;
       } else {                     /* the fixed value solution */
         *xfade = (int)( MIN(0.25*nx,ff) ) ;
         *yfade = (int)( MIN(0.25*ny,ff) ) ;
         *zfade = (int)( MIN(0.25*nz,ff) ) ;
       }
     }
   }
}
예제 #13
0
파일: afni_filer.c 프로젝트: Gilles86/afni
void AFNI_coord_filer_setup( Three_D_View *im3d )
{
   char ename[32] , *eval ; int ic ;

ENTRY("AFNI_coord_filer_setup") ;

   if( !IM3D_OPEN(im3d) ) EXRETURN ;
   ic = AFNI_controller_index(im3d) ;
   if( ic < 0 || ic >= MAX_CONTROLLERS || fpc[ic] != NULL ) EXRETURN ;

   sprintf(ename,"AFNI_FILE_COORDS_%c",abet[ic]) ;
   eval = my_getenv(ename) ;
   if( eval == NULL || *eval == '\0' ){ fpc[ic] = NULL ; EXRETURN ; }

   if( strcmp(eval,"-") == 0 || strncmp(eval,"stdout",6) == 0 )
     fpc[ic] = stdout ;
   else {
     fpc[ic] = fopen( eval , "w" ) ;
     if( fpc[ic] == NULL ){
       ERROR_message("Unable to open file %s from %s",eval,ename) ;
       EXRETURN ;
     }
   }

   AFNI_receive_init( im3d , RECEIVE_VIEWPOINT_MASK ,
                             AFNI_filer_viewpoint_CB ,
                             im3d , "AFNI_filer_viewpoint_CB" ) ;

   INFO_message("Logging [%c] viewpoint changes to '%s'",abet[ic],eval) ;
   EXRETURN ;
}
예제 #14
0
int		find_full_path(t_info *info)
{
  char		*path;
  int		i;
  char		*line;
  char		*tp;

  i = 0;
  path = my_getenv(info, "PATH");
  if (path == NULL)
    return (error_int("Variable PATH doesn't exist", 1));
  tp = strtok(path, ":");
  check_line(tp, info);
  while ((tp = strtok(NULL, ":")))
    {
      if (check_line(tp, info) == RETURN_SUCCESS)
	{
	  free(path);
	  return (RETURN_SUCCESS);
	}
      memset(tp, '\0', strlen(tp));
    }
  free(tp);
  free(path);
  return (RETURN_ERROR);
}
예제 #15
0
int     previous_dir(t_mysh *ptr)
{
  char	*tmp;

  if (ptr->previous == 0)
    {
      my_putstr(": No such file or directory\n");
      return (0);
    }
  if ((tmp = my_strdup(ptr->previous)) == NULL)
    return (0);
  if (chdir(tmp) == 0)
    {
      if (my_getenv("PWD", ptr) == 0)
	return (0);
      free(ptr->previous);
      if ((ptr->previous = my_strdup(ptr->recup_getenv)) == 0)
	return (0);
      modif_path(ptr, "PWD", tmp);
      free(tmp);
      return (1);
    }
  my_putstr("Error with chdir\n");
  return (0);
}
예제 #16
0
int		main()
{
  t_mysh	mysh;

  my_printf(GREEN "\t\t\t\t\tWelcome to mysh v_1\n\n" DEFAULT_COLOR);
  if (signal(SIGINT, SIG_IGN) == SIG_ERR)
    exit(0);
  recup_env(&mysh);
  if (my_getenv("PWD", &mysh) != 0)
    {
      if ((mysh.previous = my_strdup(mysh.recup_getenv)) == NULL)
	return (0);
    }
  else
    mysh.previous = NULL;
  while (42)
    {
      prompt(&mysh);
      if ((mysh.command = get_next_line(0, &mysh)) == NULL)
	{
	  my_putchar('\n');
	  my_exit(&mysh);
	}
      else
	init_command(&mysh);
    }
  return (0);
}
예제 #17
0
int	unsetenv_for_setenv(t_manage *man, char *cmd, int pos)
{
  pos = 0;
  if ((pos = my_getenv(man->all_env->my_env, cmd)) == -1)
    return (-1);
  man->all_env->my_env = d_tab_unset_doc(man->all_env->my_env, pos - 1);
  return (0);
}
예제 #18
0
파일: afni_environ.c 프로젝트: afni/rmafni
double AFNI_numenv_def( char *ename, double dd ) /* 18 Sep 2007 */
{
   char *ept,*ccc ; double val=dd ;
   if( ename == NULL ) return val ;
   ept = my_getenv(ename) ;
   if( ept   == NULL ) return val ;
   val = strtod(ept,&ccc) ; if( ccc == ept ) val = dd ;
   return val ;
}
예제 #19
0
void THD_enviro_write_order(void)
{
   char *hh = my_getenv("AFNI_BYTEORDER") ;

   if( hh == NULL ){ output_order = -1 ; return ; }

   if( strcmp(hh,LSB_FIRST_STRING) == 0 ){ output_order = LSB_FIRST; return; }
   if( strcmp(hh,MSB_FIRST_STRING) == 0 ){ output_order = MSB_FIRST; return; }

   output_order = -1 ; return ;
}
예제 #20
0
void conv_set_ref( int num , float * ref )
{
   if( num > 0 && ref != NULL ){ /*** if have inputs, make space & copy in ***/
      int ii ;

      /* get rid of old data */

      if(refts != NULL){ free(refts); refts = NULL; free(refin); refin = NULL; }

      refnum = num ;
      refts  = (float *) malloc( sizeof(float) * num ) ;
      refin  = (int *)   malloc( sizeof(int)   * num ) ;
      memcpy( refts , ref , sizeof(float) * num ) ;
      for( ii=0,refnz=0 ; ii < num ; ii++ )        /* build list of nonzero */
         if( refts[ii] != 0 ) refin[refnz++] = ii ;      /* points in refts */
      if( refnz == 0 )
         ERREX("model_conv_diffgamma: All zero reference timeseries!") ;

      if( g_debug ) {
         fprintf(stderr,"+d conv_set_ref: num=%d nonzero=%d\n",num,refnz) ;
         if( g_debug > 1 ) {
            fprintf(stderr,"  TR locked stimuli :");
            for( ii = 0; ii < refnz; ii++ ) fprintf(stderr," %d", refin[ii]);
            fputc('\n',stderr);
         }
      }

      return ;

   } else { /*** if no inputs, read it from AFNI_CONVMODEL_REF 1D file ***/

     char * cp ;
     MRI_IMAGE * flim ;
     float one = 1.0 ;

     cp = my_getenv("AFNI_CONVMODEL_REF") ;  /* get name of reference file */
     if( cp == NULL )
        ERREX("model_conv_diffgamma: need ref file as AFNI_CONVMODEL_REF") ;

     flim = mri_read_1D(cp) ;      /* 16 Nov 1999: replaces mri_read_ascii */
     if( flim == NULL ){
        char buf[256] ;
        sprintf(buf,"model_conv_diffgamma: Can't read timeseries file %s",cp) ;
        ERREX(buf) ;
     }

     if( g_debug )
        fprintf(stderr,"+d conv_set_ref: refts=%s  nx=%d\n",cp,flim->ny) ;

     conv_set_ref( flim->nx , MRI_FLOAT_PTR(flim) ) ;  /* recursion! */
     mri_free(flim) ;
   }
   return ;
}
예제 #21
0
파일: main.c 프로젝트: Szarek-Pol/42sh
void		prompt(t_main *env)
{
  char	*str;

  if ((str = my_getenv(env, "PWD")) != NULL)
    printf("(%s)", str);
  else
    printf("$>");
  fflush(stdout);
  free(str);
}
예제 #22
0
int	reset_getent()
{
  char	*term;

  if ((term = my_getenv("TERM")) == NULL || tgetent(0, term) != 1)
    {
      my_putstr_error("Error on tgetent, only support xterm\n");
      return (0);
    }
  return (1);
}
예제 #23
0
char * THD_find_regular_file( char *ename, char *thispath )
{
   char *fullname , *str ;
   int id , ii ;
   char *epath;
ENTRY("THD_find_regular_file") ;
   
   if (!thispath) epath = my_getenv( "PATH" ) ;
   else epath = thispath;
   
   if( epath != NULL ){
      int epos =0 , ll = strlen(epath) ;
      char *elocal ;
      char dirname[THD_MAX_NAME] ;

      /* copy path list into local memory */

      elocal = (char *) malloc( sizeof(char) * (ll+2) ) ;
      strcpy( elocal , epath ) ; elocal[ll] = ' ' ; elocal[ll+1] = '\0' ;
      fullname = (char *) malloc( sizeof(char) * THD_MAX_NAME);

      /* replace colons with blanks */
      for( ii=0 ; ii < ll ; ii++ )
         if( elocal[ii] == ':' ) elocal[ii] = ' ' ;

      /* extract blank delimited strings,
         use as directory names to get timeseries files */

      do{
         ii = sscanf( elocal+epos , "%s%n" , dirname , &id ) ;
         if( ii < 1 ) break ;  /* no read ==> end of work */
         epos += id ;          /* epos = char after last one scanned */

         ii = strlen(dirname) ;                      /* make sure name has */
         if( dirname[ii-1] != '/' ){                 /* a trailing '/' on it */
            dirname[ii]  = '/' ; dirname[ii+1] = '\0' ;
         }
         if( !THD_is_directory(dirname) ) continue ;    /* 25 Feb 2002 */

         sprintf(fullname, "%s%s",dirname,ename);
         if( THD_is_file(fullname) ) {
            /* found the file in the current directory */
            free(elocal) ;
            RETURN(fullname);
         }

      } while( epos < ll ) ;  /* scan until 'epos' is after end of epath */

      free(elocal) ; free(fullname);
   }

   RETURN(NULL) ;
}
예제 #24
0
파일: afni_environ.c 프로젝트: afni/rmafni
double AFNI_numenv( char *ename )  /* 23 Aug 2003 */
{
   char *ept,*ccc ; double val ;
   if( ename == NULL ) return 0.0 ;
   ept = my_getenv(ename) ;
   if( ept   == NULL ) return 0.0 ;
   val = strtod(ept,&ccc) ;
        if( *ccc == 'k' || *ccc == 'K' ) val *= 1024.0 ;
   else if( *ccc == 'm' || *ccc == 'M' ) val *= 1024.0*1024.0 ;
   else if( *ccc == 'g' || *ccc == 'G' ) val *= 1024.0*1024.0*1024.0 ;
   return val ;
}
예제 #25
0
int	setenv_void(t_manage *man, char **d_cmd)
{
  int	ret;

  ret = 0;
  if ((ret = my_getenv(man->all_env->my_env, d_cmd[1])) != -1)
    unsetenv_for_setenv(man, d_cmd[1], 1);
  man->all_env->my_env = d_tab_cpy_doc(man->all_env->my_env,
				       separator(d_cmd[1], " ", '='));
  wordtab_end(d_cmd);
  return (0);
}
예제 #26
0
파일: cd.c 프로젝트: brendan-rius/12sh
int		builtin_cd(size_t argc, char **argv)
{
  char		*dir;
  char		pwd[1024];
  char		oldpwd[1024];

  getcwd(oldpwd, 1023);
  if (argc <= 0)
    dir = my_getenv("HOME");
  else if (strcmp(argv[0], "-") == 0)
    dir = my_getenv("OLDPWD");
  else
    dir = argv[0];
  if (dir == NULL)
    return (-1);
  if (chdir(dir) != 0)
    my_perror();
  my_setenv("OLDPWD", oldpwd);
  my_setenv("PWD", getcwd(pwd, 1023));
  return (0);
}
예제 #27
0
void	prompt(t_mysh *ptr)
{
  if (ptr->env == NULL)
    my_putstr(YELLOW "where is my env ?");
  else
    {
      my_printf(BLUE);
      if (my_getenv("USER", ptr) != 0)
	my_printf("%s", ptr->recup_getenv);
      else if (my_getenv("HOST", ptr) != 0)
	my_printf("%s", ptr->recup_getenv);
      else if (my_getenv("USERNAME", ptr) != 0)
	my_printf("%s", ptr->recup_getenv);
      else if (my_getenv("LOGNAME", ptr) != 0)
	my_printf("%s", ptr->recup_getenv);
      else
	my_putstr(GREEN "where is my name ?");
    }
  my_printf(DEFAULT_COLOR);
  my_putchar('>');
}
예제 #28
0
int     home_dir(t_mysh *ptr)
{
  if (my_getenv("HOME", ptr) == 0)
    {
      my_putstr("HOME not found, please check the environnement\n");
      return (0);
    }
  if (my_getenv("PWD", ptr) == 0)
    return (0);
  free(ptr->previous);
  if ((ptr->previous = my_strdup(ptr->recup_getenv)) == 0)
    return (0);
  my_getenv("HOME", ptr);
  if (chdir(ptr->recup_getenv) == 0)
    modif_path(ptr, "PWD", ptr->recup_getenv);
  else
    {
      my_putstr("Error with chdir\n");
      return (0);
    }
  return (1);
}
예제 #29
0
static char     *my_cd_realpath(char *path, char **env)
{
  char          *tmp;

  tmp = NULL;
  if (my_strcmp(path, "-") == 0 || my_strcmp(path, "--") == 0)
    tmp = my_cd_back(path, env);
  else if (my_strcmp(path, "~") == 0)
    tmp = my_strdup(my_getenv(env, "HOME"));
  else if (my_strichr(path, '~') == 0 && my_strichr(path, '/') == 1)
    tmp = my_strjoin(my_getenv(env, "HOME"), my_strchr(path, '/'));
  else if (my_strichr(path, '/') == 0)
    tmp = my_strdup(path);
  else
    {
      tmp = my_strjoin(my_getenv(env, "PWD"), "/");
      tmp = my_strfjoin(tmp, my_strdup(path));
    }
  if (tmp != NULL)
    tmp = my_realpath(tmp);
  return (tmp);
}
예제 #30
0
int	echo_$(char **s, char **env)
{
  char	*str;
  char	*str2;

  if ((str = malloc(sizeof(char) * my_strlen(s[1]))) == NULL)
    return (1);
  str = exec_echo$(s, str);
  if ((str2 = my_getenv(env, str)) == NULL)
    return (1);
  my_putstr(str2);
  my_putchar('\n');
  return (0);
}