diff -Naurp rxvt-2.7.10.orig/AZZ-ChangeLog rxvt-2.7.10/AZZ-ChangeLog --- rxvt-2.7.10.orig/AZZ-ChangeLog 1969-12-31 19:00:00.000000000 -0500 +++ rxvt-2.7.10/AZZ-ChangeLog 2003-03-31 14:11:43.000000000 -0500 @@ -0,0 +1,7 @@ +- Modified to support borderlessness with -nb and override-redirect with + -or (or resources borderless and overrideRedirect). +- Modified to allow an arbitrary command to be run instead of the bell + with -bc. +- Fixed buffer overflow in command.c (not that you should install this suid + root anyway) + diff -Naurp rxvt-2.7.10.orig/src/command.c rxvt-2.7.10/src/command.c --- rxvt-2.7.10.orig/src/command.c 2003-03-26 01:01:23.000000000 -0500 +++ rxvt-2.7.10/src/command.c 2003-03-31 14:11:43.000000000 -0500 @@ -3098,7 +3098,7 @@ rxvt_tt_printf(rxvt_t *r, const char *fm unsigned char buf[256]; va_start(arg_ptr, fmt); - vsprintf((char *)buf, fmt, arg_ptr); + vsnprintf((char *)buf, sizeof buf, fmt, arg_ptr); va_end(arg_ptr); rxvt_tt_write(r, buf, (unsigned int)STRLEN(buf)); } diff -Naurp rxvt-2.7.10.orig/src/init.c rxvt-2.7.10/src/init.c --- rxvt-2.7.10.orig/src/init.c 2002-12-04 00:21:39.000000000 -0500 +++ rxvt-2.7.10/src/init.c 2003-03-31 14:11:43.000000000 -0500 @@ -34,6 +34,7 @@ #include "../config.h" /* NECESSARY */ #include "rxvt.h" /* NECESSARY */ #include "init.h" +#include #include @@ -1126,6 +1127,24 @@ rxvt_Create_Windows(rxvt_t *r, int argc, r->PixColors[Color_border], r->PixColors[Color_fg]); #endif + if (r->Options & Opt_borderless) { + Atom mwmatom; + MotifWmHints hints; + + mwmatom = XInternAtom(r->Xdisplay, _XA_MOTIF_WM_HINTS, FALSE); + hints.flags = MWM_HINTS_DECORATIONS; + hints.decorations = 0; + XChangeProperty(r->Xdisplay, r->TermWin.parent[0], mwmatom, mwmatom, + 32, PropModeReplace, (unsigned char *)&hints, + sizeof(MotifWmHints)/sizeof(long)); + } + if (r->Options & Opt_overrideredirect) { + XSetWindowAttributes attrib; + + attrib.override_redirect = True; + XChangeWindowAttributes(r->Xdisplay, r->TermWin.parent[0], + CWOverrideRedirect, &attrib); + } rxvt_xterm_seq(r, XTerm_title, r->h->rs[Rs_title], CHAR_ST); rxvt_xterm_seq(r, XTerm_iconName, r->h->rs[Rs_iconName], CHAR_ST); diff -Naurp rxvt-2.7.10.orig/src/rxvt.h rxvt-2.7.10/src/rxvt.h --- rxvt-2.7.10.orig/src/rxvt.h 2003-03-06 20:17:18.000000000 -0500 +++ rxvt-2.7.10/src/rxvt.h 2003-03-31 14:11:43.000000000 -0500 @@ -581,6 +581,9 @@ enum { Rs_modifier, Rs_answerbackstring, Rs_tripleclickwords, + Rs_borderless, + Rs_overrideRedirect, + Rs_bellCommand, NUM_RESOURCES } ; diff -Naurp rxvt-2.7.10.orig/src/rxvtlib.h.in rxvt-2.7.10/src/rxvtlib.h.in --- rxvt-2.7.10.orig/src/rxvtlib.h.in 2003-02-27 20:03:16.000000000 -0500 +++ rxvt-2.7.10/src/rxvtlib.h.in 2003-03-31 14:12:59.000000000 -0500 @@ -218,6 +218,8 @@ typedef enum { #define Opt_scrollWithBuffer (1LU<<17) #define Opt_jumpScroll (1LU<<18) #define Opt_mouseWheelScrollPage (1LU<<19) +#define Opt_borderless (1LU<<20) +#define Opt_overrideredirect (1LU<<21) /* place holder used for parsing command-line options */ #define Opt_Reverse (1LU<<30) #define Opt_Boolean (1LU<<31) diff -Naurp rxvt-2.7.10.orig/src/screen.c rxvt-2.7.10/src/screen.c --- rxvt-2.7.10.orig/src/screen.c 2003-03-23 11:56:06.000000000 -0500 +++ rxvt-2.7.10/src/screen.c 2003-03-31 14:11:43.000000000 -0500 @@ -29,6 +29,7 @@ #include "screen.intpro" /* PROTOS for internal routines */ #include /* get the typedef for CARD32 */ +#include /* ------------------------------------------------------------------------- */ #ifdef MULTICHAR_SET @@ -1832,6 +1833,9 @@ rxvt_scr_changeview(rxvt_t *r, u_int16_t void rxvt_scr_bell(rxvt_t *r) { + if (r->h->rs[Rs_bellCommand]) { + system(r->h->rs[Rs_bellCommand]); + } else { #ifndef NO_BELL # ifndef NO_MAPALERT # ifdef MAPALERT_OPTION @@ -1845,6 +1849,7 @@ rxvt_scr_bell(rxvt_t *r) } else XBell(r->Xdisplay, 0); #endif + } } /* ------------------------------------------------------------------------- */ diff -Naurp rxvt-2.7.10.orig/src/xdefaults.c rxvt-2.7.10/src/xdefaults.c --- rxvt-2.7.10.orig/src/xdefaults.c 2003-02-27 20:03:18.000000000 -0500 +++ rxvt-2.7.10/src/xdefaults.c 2003-03-31 14:11:43.000000000 -0500 @@ -108,6 +108,9 @@ static const struct { "scroll-on-tty-output inhibit"), BOOL(Rs_scrollTtyKeypress, "scrollTtyKeypress", "sk", Opt_scrollTtyKeypress, "scroll-on-keypress"), + BOOL(Rs_borderless, "borderless", "nb", Opt_borderless, "use MWM hints to remove the window border"), + BOOL(Rs_overrideRedirect, "overrideRedirect", "or", Opt_overrideredirect, "set the override_redirect flag"), + STRG(Rs_bellCommand, "bellCommand", "bc", "string", "command to execute instead of beeping"), BOOL(Rs_scrollWithBuffer, "scrollWithBuffer", "sw", Opt_scrollWithBuffer, "scroll-with-buffer"), #ifdef TRANSPARENT