]> git.pld-linux.org Git - packages/screen.git/commitdiff
locate screenrc using $CONFIG_DIR
authoryossa <yossa@pld-linux.org>
Wed, 2 Feb 2000 20:51:27 +0000 (20:51 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    screen-home_etc.patch -> 1.1
    screen.spec -> 1.21

screen-home_etc.patch [new file with mode: 0644]
screen.spec

diff --git a/screen-home_etc.patch b/screen-home_etc.patch
new file mode 100644 (file)
index 0000000..19d0230
--- /dev/null
@@ -0,0 +1,234 @@
+diff -rNu screen-3.9.4-orig/Makefile.in screen-3.9.4/Makefile.in
+--- screen-3.9.4-orig/Makefile.in      Wed Aug 11 22:19:51 1999
++++ screen-3.9.4/Makefile.in   Wed Feb  2 20:55:17 2000
+@@ -55,12 +55,12 @@
+       search.c tty.c term.c window.c utmp.c loadav.c putenv.c help.c \
+       termcap.c input.c attacher.c pty.c process.c display.c comm.c \
+       kmapdef.c acls.c braille.c braille_tsi.c logfile.c layer.c \
+-      sched.c teln.c nethack.c
++      sched.c teln.c nethack.c userdir.c
+ OFILES=       screen.o ansi.o fileio.o mark.o misc.o resize.o socket.o \
+       search.o tty.o term.o window.o utmp.o loadav.o putenv.o help.o \
+       termcap.o input.o attacher.o pty.o process.o display.o comm.o \
+       kmapdef.o acls.o braille.o braille_tsi.o logfile.o layer.o \
+-      sched.o teln.o nethack.o
++      sched.o teln.o nethack.o userdir.o
+ all:  screen
+@@ -270,7 +270,7 @@
+  comm.h layer.h term.h image.h display.h window.h braille.h extern.h \
+  logfile.h
+ fileio.o: fileio.c rcs.h config.h screen.h os.h osdef.h ansi.h acls.h \
+- comm.h layer.h term.h image.h display.h window.h extern.h
++ comm.h layer.h term.h image.h display.h window.h extern.h userdir.h
+ mark.o: mark.c rcs.h config.h screen.h os.h osdef.h ansi.h acls.h \
+  comm.h layer.h term.h image.h display.h window.h mark.h extern.h
+ misc.o: misc.c rcs.h config.h screen.h os.h osdef.h ansi.h acls.h \
+diff -rNu screen-3.9.4-orig/config.h.in screen-3.9.4/config.h.in
+--- screen-3.9.4-orig/config.h.in      Wed Aug 11 22:19:51 1999
++++ screen-3.9.4/config.h.in   Wed Feb  2 20:38:44 2000
+@@ -55,7 +55,7 @@
+ /*
+  * Screen sources two startup files. First a global file with a path
+- * specified here, second your local $HOME/.screenrc
++ * specified here, second your local $HOME/etc/screenrc
+  * Don't define this, if you don't want it.
+  */
+ #ifndef ETCSCREENRC
+diff -rNu screen-3.9.4-orig/fileio.c screen-3.9.4/fileio.c
+--- screen-3.9.4-orig/fileio.c Mon Jul 26 19:51:02 1999
++++ screen-3.9.4/fileio.c      Wed Feb  2 21:02:40 2000
+@@ -28,6 +28,7 @@
+ #include <sys/types.h>
+ #include <fcntl.h>
+ #include <sys/stat.h>
++#include <sys/param.h>
+ #ifndef SIGINT
+ # include <signal.h>
+@@ -36,6 +37,7 @@
+ #include "config.h" 
+ #include "screen.h"
+ #include "extern.h"
++#include "userdir.h"
+ extern struct display *display, *displays;
+ extern struct win *fore;
+@@ -94,8 +96,9 @@
+ findrcfile(rcfile)
+ char *rcfile;
+ {
+-  static char buf[256];
++  static char buf[MAXPATHLEN];
+   char *rc, *p;
++  struct cfv etcfile;
+   if (rcfile)
+     {
+@@ -112,11 +115,22 @@
+       }
+       else
+       {
+-        debug("  ...nothing in $SCREENRC, defaulting $HOME/.screenrc\n");
+-        if (strlen(home) > sizeof(buf) - 12)
+-          Panic(0, "Rc: home too large");
+-        sprintf(buf, "%s/.screenrc", home);
+-        rc = SaveStr(buf);
++        debug("  ...nothing in $SCREENRC, defaulting $HOME/etc/screenrc\n");
++        etcfile.variable = "CONFIG_DIR";
++          etcfile.home_dir = NULL;
++          etcfile.home_scd = NULL; 
++          etcfile.subname = "screenrc";
++          etcfile.prefix = "."; 
++          etcfile.suffix = ""; 
++          etcfile.mode = M_REGULAR_FILE; 
++          if ((usercfv (&etcfile)) == -1) {
++              if (strlen(home) > sizeof(buf) - 12)
++                  Panic(0, "Rc: home too large");
++              sprintf(buf, "%s/.screenrc", home);
++              rc = SaveStr(buf);
++        }   
++        else 
++              rc = SaveStr(etcfile.result); 
+       }
+     }
+   return rc;
+diff -rNu screen-3.9.4-orig/userdir.c screen-3.9.4/userdir.c
+--- screen-3.9.4-orig/userdir.c        Thu Jan  1 01:00:00 1970
++++ screen-3.9.4/userdir.c     Wed Feb  2 00:18:04 2000
+@@ -0,0 +1,92 @@
++#include "userdir.h"
++    
++static char *nonulhome = "";
++
++/******************************************************************************/
++    
++int getusercfv (char *variable, 
++                  char *home_dir, 
++                  char *user_dir, 
++                  size_t stringsize)
++      {
++      struct stat st;
++      char *d;
++      
++      bzero (user_dir, stringsize);
++      if (variable == NULL || *variable == '\0') return (-1);
++      if (home_dir == NULL) home_dir = nonulhome;
++      d = getenv (variable);  
++      if (d == NULL || *d == '\0') return (-1);
++      if (*d == '/') 
++          {
++          strncpy (user_dir, d, stringsize-1);
++          }
++      else
++          {
++          snprintf (user_dir, stringsize-1, "%s/%s", home_dir, d);
++          }
++          
++      if (stat(user_dir,&st) != -1 && S_ISDIR(st.st_mode)) 
++          {
++          return (0);
++          }
++      
++      return (-1);
++      }
++
++/******************************************************************************/
++
++int usercfv (struct cfv *CFV)
++      {
++      int gr;
++      struct stat st;
++      char *p;
++      
++      if (CFV->subname == NULL) CFV->subname = nonulhome;
++      if (CFV->home_dir == NULL) CFV->home_dir = getenv ("HOME");
++      if (CFV->home_dir == NULL) CFV->home_dir = CFV->home_scd;
++      if (CFV->home_dir == NULL) return (-1);
++      
++      gr = getusercfv (CFV->variable, 
++                      CFV->home_dir, 
++                      CFV->result,
++                      MAXPATHLEN);
++                      
++      if (gr != -1)   /* have main directory */
++          {
++          if ((p = strrchr(CFV->result, '/')) && *(p+1) == '\0') 
++              p = '\0';
++          snprintf ((rindex(CFV->result,'\0')), MAXPATHLEN-1, "/%s", CFV->subname);
++          if (stat( CFV->result,&st) != -1 
++               && CFV->mode ? S_ISDIR(st.st_mode) : S_ISREG(st.st_mode)) /* have file or dir */
++              return (1);
++          }
++
++      /* don't have main directory or a proper variable set */
++      
++      if (CFV->home_dir == NULL || *(CFV->home_dir) == '\0') return (-1);
++      if (CFV->prefix == NULL && CFV->suffix == NULL) return (-1);
++      snprintf (CFV->result, MAXPATHLEN-1, "%s/%s%s%s", 
++                     CFV->home_dir, 
++                     CFV->prefix? CFV->prefix:"",
++                     CFV->subname,
++                     CFV->suffix? CFV->suffix:"");
++      if (stat(CFV->result,&st) != -1 
++               && CFV->mode ? S_ISDIR(st.st_mode) : S_ISREG(st.st_mode)) /* have file or dir */
++              return (2);
++      return (-1);
++      }
++      
++/******************************************************************************/
++      
++FILE *fopencfv (struct cfv *CFV, const char *mode)
++    {
++    FILE *cfvfile = NULL;
++    
++    CFV->mode = M_REGULAR_FILE;
++    if ((usercfv (CFV)) == -1) return (NULL); 
++    cfvfile = fopen (CFV->result, mode);
++    return (cfvfile);
++    }
++    
++/******************************************************************************/
+\ No newline at end of file
+diff -rNu screen-3.9.4-orig/userdir.h screen-3.9.4/userdir.h
+--- screen-3.9.4-orig/userdir.h        Thu Jan  1 01:00:00 1970
++++ screen-3.9.4/userdir.h     Wed Feb  2 00:18:04 2000
+@@ -0,0 +1,35 @@
++#ifndef USERDIR__H
++#define USERDIR__H
++
++#include <unistd.h>
++#include <string.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/param.h>
++
++#define       M_REGULAR_FILE  0
++#define       M_DIRECTORY     1
++
++struct cfv {
++      char result[MAXPATHLEN];        /* our result                   */
++      char *variable; /* name of an environment variable              */
++      char *home_dir; /* home directory or NULL for autodetect        */
++      char *home_scd; /* directory if home_dir==NULL and no result    */
++      char *subname;  /* core name of a file/directory                */
++      char *prefix;   /* prefix when using directly home_dir          */
++      char *suffix;   /* suffix when using directly home_dir          */
++      int mode;       /* expected: M_REGULAR_FILE or M_DIRECTORY      */
++      };
++
++int getusercfv (char *variable, 
++                  char *home_dir, 
++                  char *user_dir,
++                  size_t stringsize);
++
++int usercfv (struct cfv *CFV);
++
++FILE *fopencfv (struct cfv *CFV, const char *mode);
++
++#endif
+\ No newline at end of file
index e1a4f9e78c67c52d1ac92b5ca281dd3f956ec74f..c0c0dcc13cea289c1727bce6144622a9410d36a8 100644 (file)
@@ -5,7 +5,7 @@ Summary(pl):    Screen - Program zarz
 Summary(tr):   Bir uçbirimde birden fazla oturumu düzenler
 Name:          screen
 Version:       3.9.4
-Release:       4
+Release:       5
 Copyright:     GPL
 Group:         Utilities/Terminal
 Group(pl):     Narzêdzia/Terminal
@@ -19,6 +19,7 @@ Patch5:               screen-DESTDIR.patch
 Patch6:                screen-doc_fixes.patch
 Patch7:                screen-texinfo_doc_fixes.patch
 Patch8:                screen-ncurses.patch
+Patch9:                screen-home_etc.patch
 BuildRequires: ncurses-devel >= 5.0
 BuildRequires: utempter-devel
 Prereq:                /usr/sbin/fix-info-dir
@@ -64,6 +65,7 @@ ba
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
+%patch9 -p1
 
 %build
 LDFLAGS="-s"; export LDFLAGS
This page took 0.087771 seconds and 4 git commands to generate.