Move authentication to a common file
authorThomas White <taw@bitwiz.org.uk>
Sat, 2 May 2009 19:01:56 +0000 (20:01 +0100)
committerThomas White <taw@bitwiz.org.uk>
Sat, 2 May 2009 19:01:56 +0000 (20:01 +0100)
Makefile
gdri-cmdq-submission.c
utils.c [new file with mode: 0644]
utils.h [new file with mode: 0644]

index 642a246..cc773d4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,8 +2,8 @@ CFLAGS=-g -W -Wall
 LIBS=-lX11 -lXext -ldrm
 CC=gcc
 
-gdri-cmdq-submission: gdri-cmdq-submission.o dri2.o
-       $(CC) gdri-cmdq-submission.o dri2.o -o gdri-cmdq-submission ${LIBS}
+gdri-cmdq-submission: gdri-cmdq-submission.o dri2.o utils.o
+       $(CC) gdri-cmdq-submission.o dri2.o utils.o -o gdri-cmdq-submission ${LIBS}
 
 dri2.o: dri2.c
        $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} dri2.c -o dri2.o
@@ -11,8 +11,11 @@ dri2.o: dri2.c
 gdri-cmdq-submission.o: gdri-cmdq-submission.c
        $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} gdri-cmdq-submission.c -o gdri-cmdq-submission.o
 
+utils.o: utils.c
+       $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} utils.c -o utils.o
+
 clean:
-       rm -rf dri2.o gdri-cmdq-submission.o gdri-cmdq-submission
+       rm -rf dri2.o gdri-cmdq-submission.o utils.o gdri-cmdq-submission
 
 install:
        install -d -m 755 ${PREFIX}/bin
index 40dfcc9..a78093b 100644 (file)
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
 #include <X11/Xlib.h>
-#include <X11/Xutil.h>
 
 #include <X11/Xmd.h>
 #include <stdint.h>
 
 #include "dri2.h"
 #include "glamo-regs.h"
+#include "utils.h"
 
 
-#define RING_LOCALS int __count = 0;
-#define OUT_REG(reg, val) cmds[__count++] = (reg); cmds[__count++] = (val);
-
-
-static int do_drm_authentication(Display *dpy)
-{
-       int scrnum;
-       Window root;
-       char *driver;
-       char *device;
-       int fd;
-       drm_magic_t magic;
-
-       /* Get default screen, root window and default visual */
-       scrnum = DefaultScreen(dpy);
-       root = RootWindow(dpy, scrnum);
-
-       /* Get device name */
-       if ( !DRI2Connect(dpy, root, &driver, &device) ) {
-               fprintf(stderr, "DRI2Connect failed\n");
-               return -1;
-       }
-
-       /* Open DRM device */
-       fd = open(device, O_RDWR);
-       if ( fd < 0 ) {
-               fprintf(stderr, "Couldn't open '%s': %s\n",
-                       device, strerror(errno));
-               return -1;
-       }
-
-       /* Get an authentication token */
-       if ( drmGetMagic(fd, &magic) ) {
-               fprintf(stderr, "drmGetMagic failed\n");
-               return -1;
-       }
-
-       /* Authenticate */
-       if ( DRI2Authenticate(dpy, root, magic) == False ) {
-               fprintf(stderr, "DRI2Authenticate failed\n");
-               return -1;
-       }
-
-       return fd;
-}
-
 int main()
 {
        Display *dpy;
diff --git a/utils.c b/utils.c
new file mode 100644 (file)
index 0000000..276e21c
--- /dev/null
+++ b/utils.c
@@ -0,0 +1,86 @@
+/*
+ * utils.c
+ *
+ * Common bits
+ *
+ * (c) 2009 Thomas White <taw@bitwiz.org.uk>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+#include <X11/Xmd.h>
+#include <stdint.h>
+#include <drm/drm.h>
+
+#include "dri2.h"
+
+
+#define RING_LOCALS int __count = 0;
+#define OUT_REG(reg, val) cmds[__count++] = (reg); cmds[__count++] = (val);
+
+
+int do_drm_authentication(Display *dpy)
+{
+       int scrnum;
+       Window root;
+       char *driver;
+       char *device;
+       int fd;
+       drm_magic_t magic;
+
+       /* Get default screen, root window and default visual */
+       scrnum = DefaultScreen(dpy);
+       root = RootWindow(dpy, scrnum);
+
+       /* Get device name */
+       if ( !DRI2Connect(dpy, root, &driver, &device) ) {
+               fprintf(stderr, "DRI2Connect failed\n");
+               return -1;
+       }
+
+       /* Open DRM device */
+       fd = open(device, O_RDWR);
+       if ( fd < 0 ) {
+               fprintf(stderr, "Couldn't open '%s': %s\n",
+                       device, strerror(errno));
+               return -1;
+       }
+
+       /* Get an authentication token */
+       if ( drmGetMagic(fd, &magic) ) {
+               fprintf(stderr, "drmGetMagic failed\n");
+               return -1;
+       }
+
+       /* Authenticate */
+       if ( DRI2Authenticate(dpy, root, magic) == False ) {
+               fprintf(stderr, "DRI2Authenticate failed\n");
+               return -1;
+       }
+
+       return fd;
+}
diff --git a/utils.h b/utils.h
new file mode 100644 (file)
index 0000000..0f19435
--- /dev/null
+++ b/utils.h
@@ -0,0 +1,35 @@
+/*
+ * utils.h
+ *
+ * Common bits
+ *
+ * (c) 2009 Thomas White <taw@bitwiz.org.uk>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef UTILS_H
+#define UTILS_H
+
+
+#include <X11/Xmd.h>
+
+#define RING_LOCALS int __count = 0;
+#define OUT_REG(reg, val) cmds[__count++] = (reg); cmds[__count++] = (val);
+
+extern int do_drm_authentication(Display *dpy);
+
+
+#endif /* UTILS_H */