Hi all,

As tetris is one of my preferred game :-) ... just did wrapper around
setegid in same manner than xmalloc and such. If it can find any use ...

Thanks.
Index: scores.c
===================================================================
RCS file: /cvs/src/games/tetris/scores.c,v
retrieving revision 1.12
diff -u -p -r1.12 scores.c
--- scores.c    16 Nov 2014 04:49:49 -0000      1.12
+++ scores.c    15 Mar 2015 09:08:46 -0000
@@ -111,11 +111,11 @@ getscores(FILE **fpp)
                human = "reading";
                lck = LOCK_SH;
        }
-       setegid(egid);
+       xsetegid(egid);
        mask = umask(S_IWOTH);
        sd = open(_PATH_SCOREFILE, mint, 0666);
        (void)umask(mask);
-       setegid(gid);
+       xsetegid(gid);
        if (sd < 0) {
                if (fpp == NULL) {
                        nscores = 0;
@@ -123,10 +123,10 @@ getscores(FILE **fpp)
                }
                err(1, "cannot open %s for %s", _PATH_SCOREFILE, human);
        }
-       setegid(egid);
+       xsetegid(egid);
        if ((sf = fdopen(sd, mstr)) == NULL)
                err(1, "cannot fdopen %s for %s", _PATH_SCOREFILE, human);
-       setegid(gid);
+       xsetegid(gid);
 
        /*
         * Grab a lock.
Index: tetris.c
===================================================================
RCS file: /cvs/src/games/tetris/tetris.c,v
retrieving revision 1.25
diff -u -p -r1.25 tetris.c
--- tetris.c    16 Nov 2014 04:49:49 -0000      1.25
+++ tetris.c    15 Mar 2015 09:08:46 -0000
@@ -161,7 +161,7 @@ main(int argc, char *argv[])
 
        gid = getgid();
        egid = getegid();
-       setegid(gid);
+       xsetegid(gid);
 
        classic = showpreview = 0;
        while ((ch = getopt(argc, argv, "ck:l:ps")) != -1)
@@ -363,4 +363,11 @@ usage(void)
 {
        (void)fprintf(stderr, "usage: tetris [-cps] [-k keys] [-l level]\n");
        exit(1);
+}
+
+void
+xsetegid(gid_t gid)
+{
+    if (setegid(gid) == -1)
+        err(1, "setegid() failed");
 }
Index: tetris.h
===================================================================
RCS file: /cvs/src/games/tetris/tetris.h,v
retrieving revision 1.10
diff -u -p -r1.10 tetris.h
--- tetris.h    10 Aug 2008 12:23:25 -0000      1.10
+++ tetris.h    15 Mar 2015 09:08:46 -0000
@@ -176,3 +176,4 @@ extern int  classic;
 int    fits_in(const struct shape *, int);
 void   place(const struct shape *, int, int);
 void   stop(char *);
+void   xsetegid(gid_t);

Reply via email to