Ticket #4202: MC_SID.patch

File MC_SID.patch, 2.4 KB (added by psprint, 3 years ago)
  • src/main.c

    From c9443dd798435ba3d2b2b59a79c416f25beb150b Mon Sep 17 00:00:00 2001
    From: Sebastian Gniazdowski <sgniazdowski@gmail.com>
    Date: Tue, 16 Feb 2021 16:55:48 -0600
    Subject: Move MC_SID setup to main.c
    
    ---
     src/main.c            | 21 +++++++++++++++++++++
     src/subshell/common.c | 12 ------------
     2 files changed, 21 insertions(+), 12 deletions(-)
    
    diff --git a/src/main.c b/src/main.c
    index d691bcb2a..7382e34d7 100644
    a b check_sid (void) 
    240240    return (old_sid != my_sid); 
    241241} 
    242242 
     243static void 
     244set_sid_env_var(void) 
     245{ 
     246    pid_t mc_sid; 
     247 
     248    /* Get a fresh terminal session */ 
     249    setsid (); 
     250 
     251    /* Set MC_SID to prevent running one mc from another */ 
     252    mc_sid = getsid (0); 
     253    if (mc_sid != -1) 
     254    { 
     255        char sid_str[BUF_SMALL]; 
     256 
     257        g_snprintf (sid_str, sizeof (sid_str), "MC_SID=%ld", (long) mc_sid); 
     258        putenv (g_strdup (sid_str)); 
     259    } 
     260} 
     261 
    243262/* --------------------------------------------------------------------------------------------- */ 
    244263/*** public functions ****************************************************************************/ 
    245264/* --------------------------------------------------------------------------------------------- */ 
    main (int argc, char *argv[]) 
    264283    /* do this before args parsing */ 
    265284    str_init_strings (NULL); 
    266285 
     286    set_sid_env_var(); 
     287 
    267288    mc_setup_run_mode (argv);   /* are we mc? editor? viewer? etc... */ 
    268289 
    269290    if (!mc_args_parse (&argc, &argv, "mc", &mcerror)) 
  • src/subshell/common.c

    diff --git a/src/subshell/common.c b/src/subshell/common.c
    index cb8bbe3f1..97cd78117 100644
    a b init_subshell_child (const char *pty_name) 
    272272{ 
    273273    char *init_file = NULL; 
    274274    char *putenv_str = NULL; 
    275     pid_t mc_sid; 
    276275 
    277276    (void) pty_name; 
    278     setsid ();                  /* Get a fresh terminal session */ 
    279277 
    280278    /* Make sure that it has become our controlling terminal */ 
    281279 
    init_subshell_child (const char *pty_name) 
    309307        (void) ret; 
    310308    } 
    311309 
    312     /* Set MC_SID to prevent running one mc from another */ 
    313     mc_sid = getsid (0); 
    314     if (mc_sid != -1) 
    315     { 
    316         char sid_str[BUF_SMALL]; 
    317  
    318         g_snprintf (sid_str, sizeof (sid_str), "MC_SID=%ld", (long) mc_sid); 
    319         putenv (g_strdup (sid_str)); 
    320     } 
    321  
    322310    switch (mc_global.shell->type) 
    323311    { 
    324312    case SHELL_BASH: