Eugen Minciu wrote:
> On Mon, 28 Aug 2006 08:01:54 +0300
> Eugen Minciu <[EMAIL PROTECTED]> wrote:
>
> And here is another version that frees the memory it allocates in the correct 
> place.
>
> Sorry about so many posts on what should have been a simple thingie. It's the 
> first patch I'm sending you guys, I promise I'll try to shut up a bit more 
> from now on ;)
>   

hahaha... i'll wait a couple of hours for good measure then I'll commit ;)

thx for actually taking the time to solve this.
>   
>> On Mon, 28 Aug 2006 05:04:10 +0100
>> Essien Ita Essien <[EMAIL PROTECTED]> wrote:
>>
>> Ouch, sorry, lol :)
>> Here it is
>>
>>     
>>> Eugen Minciu wrote:
>>>       
>>>> On Sun, 27 Aug 2006 23:22:38 +0300
>>>> Eugen Minciu <[EMAIL PROTECTED]> wrote:
>>>> And finally, I've got it.
>>>>
>>>> The problem was in entrance_auth_setup_environment() which called 
>>>> clearenv().
>>>>
>>>> For some reasong calling getenv() there did not return the path either. So 
>>>> I added an extra parameter, const char *path.
>>>>
>>>> This finally works, I can run apps and everything appears to be working 
>>>> correctly.
>>>>   
>>>>         
>>> Nice, but no patch attached ;)
>>>       
>>>> Eugen. 
>>>>   
>>>>         
>>>>> On Sun, 27 Aug 2006 22:36:31 +0300
>>>>> Eugen Minciu <[EMAIL PROTECTED]> wrote:
>>>>> I've figured out what causes the problem, but I don't know how to fix it 
>>>>> this time.
>>>>>
>>>>> This happens because once I replace the execl() call in 
>>>>> entrance_session_start_user_session, the environment variables for the 
>>>>> user are no longer loaded. If anyone could tell me how to load these 
>>>>> settings from C code, I'd very much appreciate it.
>>>>>
>>>>> As things stand, at this point, entrance does work with this, and the E17 
>>>>> session starts, but many issues can quickly be noticed, probably caused 
>>>>> by not setting the environment variables to some proper values.
>>>>>
>>>>>     
>>>>>           
>>>>>> On Sun, 27 Aug 2006 22:30:58 +0300
>>>>>> Eugen Minciu <[EMAIL PROTECTED]> wrote:
>>>>>>
>>>>>> Sorry, it seems that if I use this I get some issues within e. If I try 
>>>>>> to start an application from the run command thingie, it will tell me 
>>>>>> that the application failed to start.
>>>>>>
>>>>>> I'll try to see what causes this. If anyone would be willing to 
>>>>>> investigate and/or give me any clues it would be appreciated.
>>>>>>
>>>>>>       
>>>>>>             
>>>>>>> Here's a new patch for entranced and entrance.
>>>>>>>
>>>>>>> This time I did what the comment suggested in both places. I used 
>>>>>>> strtok and parsed directly into a char ** which then gets run by 
>>>>>>> execv/execvp.
>>>>>>>
>>>>>>> If my code strikes you as ugly (I'm not sure if it should) be sure to 
>>>>>>> tell me what I did wrong and I'll try to fix it some more.
>>>>>>>
>>>>>>> BTW, this diff is made from e17/apps/entrance. I'm sorry, is this what 
>>>>>>> you meant or should I have made it dirrectly from e17/ ?
>>>>>>>
>>>>>>> Eugen.
>>>>>>>
>>>>>>>         
>>>>>>>               
>>>> -------------------------------------------------------------------------
>>>> Using Tomcat but need to do more? Need to support web services, security?
>>>> Get stuff done quickly with pre-integrated technology to make your job 
>>>> easier
>>>> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
>>>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>>>> _______________________________________________
>>>> enlightenment-devel mailing list
>>>> enlightenment-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>>>
>>>>   
>>>>         
>> ------------------------------------------------------------------------
>>
>> Index: src/client/entrance_auth.c
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/entrance/src/client/entrance_auth.c,v
>> retrieving revision 1.26
>> diff -u -r1.26 entrance_auth.c
>> --- src/client/entrance_auth.c       9 Aug 2005 08:11:32 -0000       1.26
>> +++ src/client/entrance_auth.c       28 Aug 2006 08:15:59 -0000
>> @@ -377,7 +377,7 @@
>>   * I'm not sure if this is correct, but for now it works.
>>   */
>>  void
>> -entrance_auth_setup_environment(Entrance_Auth * e, const char *display)
>> +entrance_auth_setup_environment(Entrance_Auth * e, const char *display, 
>> const char *path)
>>  {
>>     extern char **environ;
>>     int size;
>> @@ -394,10 +394,15 @@
>>     environ = NULL;
>>  #endif
>>  
>> +   /* We purge the config but keep $PATH in place */
>> +   /* We need this because we're not running "sh -l" anymore */
>> +
>> +
>>     e->env = environ;
>>     snprintf(buf, PATH_MAX, "%s/.Xauthority", e->pw->pw_dir);
>>     setenv("XAUTHORITY", buf, 1);
>>     setenv("TERM", "vt100", 0);  // TERM=linux?
>> +   setenv("PATH", path, 1);
>>     setenv("HOME", e->pw->pw_dir, 1);
>>     setenv("SHELL", e->pw->pw_shell, 1);
>>     setenv("USER", e->pw->pw_name, 1);
>> Index: src/client/entrance_auth.h
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/entrance/src/client/entrance_auth.h,v
>> retrieving revision 1.13
>> diff -u -r1.13 entrance_auth.h
>> --- src/client/entrance_auth.h       28 May 2005 09:31:14 -0000      1.13
>> +++ src/client/entrance_auth.h       28 Aug 2006 08:15:59 -0000
>> @@ -77,7 +77,7 @@
>>  
>>  /* 0 on success, 1 on no user by that name */
>>  int entrance_auth_user_set(Entrance_Auth * e, const char *str);
>> -void entrance_auth_setup_environment(Entrance_Auth * e, const char 
>> *display);
>> +void entrance_auth_setup_environment(Entrance_Auth * e, const char 
>> *display,const char *path);
>>  void entrance_auth_reset(Entrance_Auth * e);
>>  
>>  #endif
>> Index: src/client/entrance_session.c
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/entrance/src/client/entrance_session.c,v
>> retrieving revision 1.84
>> diff -u -r1.84 entrance_session.c
>> --- src/client/entrance_session.c    3 Jun 2006 07:24:49 -0000       1.84
>> +++ src/client/entrance_session.c    28 Aug 2006 08:16:00 -0000
>> @@ -355,9 +355,12 @@
>>  entrance_session_setup_user_session(Entrance_Session * e)
>>  {
>>     char *homedir;
>> +   char *path;
>>  
>> -   entrance_auth_setup_environment(e->auth, e->display);
>>     homedir = getenv("HOME");
>> +   path = strdup(getenv("PATH"));
>> +   entrance_auth_setup_environment(e->auth, e->display, 
>> strdup(getenv("PATH")));
>> +   free(path);
>>     if (entrance_ipc_connected_get())
>>        entrance_ipc_request_xauth(homedir, e->auth->pw->pw_uid,
>>                                   e->auth->pw->pw_gid);
>> @@ -377,14 +380,24 @@
>>  {
>>     pid_t pid;
>>     char buf[PATH_MAX];
>> +   char *session_cmd_argv[32];
>> +
>>     char *shell = NULL;
>> +   char *path = NULL;
>>     struct passwd *pwent = NULL;
>>     Entrance_X_Session *exs = NULL;
>> +   int i;
>> +
>> +   path=strdup(getenv("PATH"));
>> +
>> +   for (i=0;i<32;i++) session_cmd_argv[i]=NULL;
>>  
>>     if (e->session)
>>        exs = evas_hash_find(e->config->sessions.hash, e->session);
>>  
>> -   entrance_auth_setup_environment(e->auth, e->display);
>> +   entrance_auth_setup_environment(e->auth, e->display, path);
>> +   free(path);
>> +
>>     if ((exs->session) && (exs->session[0] != 0))
>>     {
>>        if (!strcmp(exs->session, "default"))
>> @@ -497,7 +510,13 @@
>>     entrance_session_free(e);
>>     /* replace this process with a clean small one that just waits for its */
>>     /* child to exit.. passed on the cmd-line */
>> -   execl("/bin/sh", "/bin/sh", "-l", "-c", buf, NULL);
>> +
>> +   session_cmd_argv[0]=strtok(buf," ");
>> +   i=1;
>> +   while ((session_cmd_argv[i]=strtok(NULL," "))!=NULL) {
>> +      i++;
>> +   }
>> +   execvp(session_cmd_argv[0], session_cmd_argv);
>>  }
>>  
>>  
>> Index: src/daemon/entranced_display.c
>> ===================================================================
>> RCS file: /var/cvs/e/e17/apps/entrance/src/daemon/entranced_display.c,v
>> retrieving revision 1.2
>> diff -u -r1.2 entranced_display.c
>> --- src/daemon/entranced_display.c   1 Aug 2006 05:30:58 -0000       1.2
>> +++ src/daemon/entranced_display.c   28 Aug 2006 08:16:02 -0000
>> @@ -124,6 +124,11 @@
>>     double start_time;
>>     char x_cmd[PATH_MAX];
>>  
>> +   int i;
>> +   char *x_cmd_argv[32]; 
>> +
>> +   for (i=0;i<32;i++) x_cmd_argv[i]=NULL;
>> +
>>     /* Ecore_Exe *x_exe; */
>>     pid_t xpid;
>>  
>> @@ -160,9 +165,15 @@
>>          _entrance_x_sa.sa_flags = 0;
>>          sigemptyset(&_entrance_x_sa.sa_mask);
>>          sigaction(SIGUSR1, &_entrance_x_sa, NULL);
>> -      /* FIXME: need to parse command and NOT go thru /bin/sh!!!! */
>> -      /* why? some /bin/sh's wont pass on this SIGUSR1 thing... */
>> -        execl("/bin/sh", "/bin/sh", "-c", x_cmd, NULL);
>> +
>> +    x_cmd_argv[0]=strtok(x_cmd," ");
>> +    i=1;
>> +
>> +    while ((x_cmd_argv[i]=strtok(NULL," "))!=NULL) {
>> +       i++;
>> +    }
>> +
>> +        execvp(x_cmd_argv[0], x_cmd_argv);
>>          syslog(LOG_WARNING, "Could not execute X server.");
>>          exit(1);
>>       default:
>>     
>> ------------------------------------------------------------------------
>>
>> -------------------------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>     


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to