mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-14 23:46:10 +00:00
79 lines
1.9 KiB
Plaintext
79 lines
1.9 KiB
Plaintext
--- xlwin.C.orig Wed Mar 13 17:34:46 1996
|
|
+++ xlwin.C Tue May 25 12:01:08 1999
|
|
@@ -21,6 +21,10 @@
|
|
*/
|
|
|
|
extern "C"{
|
|
+#ifdef SECURE_SCOREFILES
|
|
+#include <sys/types.h>
|
|
+#include <unistd.h>
|
|
+#endif
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
}
|
|
@@ -105,7 +109,21 @@
|
|
{
|
|
if (mask == -1) return;
|
|
if (disp == NULL){
|
|
+#ifdef SECURE_SCOREFILES
|
|
+ uid_t ruid, euid;
|
|
+
|
|
+ /* get ruid */
|
|
+ ruid = getuid();
|
|
+ /* save euid */
|
|
+ euid = geteuid();
|
|
+ /* become normal user to read $HOME/.Xauthority */
|
|
+ (void)seteuid(ruid);
|
|
+#endif
|
|
disp = XOpenDisplay(disp_string);
|
|
+#ifdef SECURE_SCOREFILES
|
|
+ /* become XKOBO_ADMINISTER again */
|
|
+ (void)seteuid(euid);
|
|
+#endif
|
|
if (disp == NULL){
|
|
fprintf(stderr, "xlwin: can't open display\n");
|
|
exit(1);
|
|
@@ -125,12 +143,6 @@
|
|
|
|
XSelectInput(disp,w,mask);
|
|
mask = -1;
|
|
-
|
|
- XWMHints wmhint;
|
|
- icon = XCreateBitmapFromData(disp, w, icon_bitmap, 64, 64);
|
|
- wmhint.icon_pixmap = icon;
|
|
- wmhint.flags = IconPixmapHint;
|
|
- XSetWMHints(disp, w, &wmhint);
|
|
}
|
|
|
|
void win::map()
|
|
@@ -154,6 +166,29 @@
|
|
Atom wm_delete_window;
|
|
wm_delete_window = XInternAtom(disp, "WM_DELETE_WINDOW", False);
|
|
XSetWMProtocols(disp, w, &wm_delete_window, 1);
|
|
+}
|
|
+
|
|
+void win::set_wm_hints(int argc, char *argv[])
|
|
+{
|
|
+ XWMHints *wmhint = XAllocWMHints();
|
|
+ if (wmhint) {
|
|
+ icon = XCreateBitmapFromData(disp, w, icon_bitmap, 64, 64);
|
|
+ wmhint->icon_pixmap = icon;
|
|
+ wmhint->window_group = w;
|
|
+ wmhint->flags = IconPixmapHint | WindowGroupHint;
|
|
+ XSetWMHints(disp, w, wmhint);
|
|
+ XFree(wmhint);
|
|
+ }
|
|
+
|
|
+ XClassHint *classhint = XAllocClassHint();
|
|
+ if (classhint) {
|
|
+ classhint->res_name = "xkobo";
|
|
+ classhint->res_class = "XKobo";
|
|
+ XSetClassHint(disp, w, classhint);
|
|
+ XFree(classhint);
|
|
+ }
|
|
+
|
|
+ XSetCommand(disp, w, argv, argc);
|
|
}
|
|
|
|
void win::hold_size()
|