Doxygen Source Code Documentation
xiner.c File Reference
#include <stdio.h>#include <stdlib.h>#include <X11/X.h>#include <X11/Xlib.h>#include <X11/extensions/Xinerama.h>Go to the source code of this file.
Functions | |
| int | main (int argc, char *argv[]) |
Function Documentation
|
||||||||||||
|
Definition at line 13 of file xiner.c. References argc, dpy, and malloc.
00014 {
00015 Display * dpy ;
00016 char * dname=NULL ;
00017 int iarg , quiet=0 ;
00018 XineramaScreenInfo * xsi ; int nxsi ;
00019
00020 /*-- help the pitiful user --*/
00021
00022 if( argc > 1 && strcmp(argv[1],"-help") == 0 ){
00023 printf("Usage: xiner [-display host:num] [-q]\n"
00024 "Gets the Xinerama screen information from the X server,\n"
00025 "Writes a human-readable summary to stderr, and a simpler\n"
00026 "summary to stdout (for use with xrdb).\n"
00027 "If -q option is present, the stderr output is skipped.\n"
00028 "If Xinerama is not active, the exit status is 1, else 0.\n"
00029 ) ;
00030 exit(0);
00031 }
00032
00033 /*-- scan the command line options --*/
00034
00035 iarg = 1 ;
00036 while( iarg < argc && argv[iarg][0] == '-' ){
00037
00038 if( strcmp(argv[iarg],"-display") == 0 ){
00039 dname = argv[++iarg] ; ++iarg ; continue ;
00040 }
00041
00042 if( strcmp(argv[iarg],"-q") == 0 ){
00043 quiet++ ; iarg++ ; continue ;
00044 }
00045
00046 fprintf(stderr,"**xiner: Unknown option: %s\n",argv[iarg]) ;
00047 exit(1) ;
00048 }
00049
00050 /*-- see if we can connect --*/
00051
00052 dpy = XOpenDisplay( dname ) ;
00053 if( dpy == NULL ){
00054 fprintf(stderr,"**xiner: Can't open display\n") ; exit(1) ;
00055 }
00056
00057 /*-- see if AFNI.xinerama is already set --*/
00058
00059 if( !quiet ){
00060 char * xdef = XGetDefault(dpy,"AFNI","xinerama") ;
00061 if( xdef != NULL ){
00062 fprintf(stderr,"AFNI.xinerama is now set=%s\n",xdef) ;
00063 }
00064 }
00065
00066 /*-- Try to get the Xinerama info from the display --*/
00067
00068 xsi = XineramaQueryScreens( dpy , &nxsi ) ;
00069
00070 if( xsi == NULL || nxsi == 0 ){
00071 fprintf(stderr,"Xinerama not active on server\n") ;
00072 exit(1) ; /* The premature end of a promising career */
00073 } else {
00074 int ii ; char *xp , *xstr ;
00075
00076 xstr = (char *) malloc( sizeof(char) * (nxsi+1)*64 ) ;
00077 sprintf(xstr,"AFNI.xinerama: %d",nxsi) ;
00078
00079 if(!quiet) fprintf(stderr,"Xinerama information from server:\n") ;
00080 for( ii=0 ; ii < nxsi ; ii++ ){
00081 if( !quiet )
00082 fprintf(stderr,
00083 " Screen %2d: x origin=%4d y origin=%4d width=%4d height=%4d\n",
00084 xsi[ii].screen_number ,
00085 xsi[ii].x_org , xsi[ii].y_org ,
00086 xsi[ii].width , xsi[ii].height ) ;
00087
00088 sprintf( xstr + strlen(xstr) , " %d %d %d %d %d" ,
00089 xsi[ii].screen_number ,
00090 xsi[ii].x_org , xsi[ii].y_org ,
00091 xsi[ii].width , xsi[ii].height ) ;
00092 }
00093
00094 printf("%s\n",xstr) ;
00095 }
00096
00097 /*-- Ciao, baby --*/
00098
00099 exit(0) ;
00100 }
|