#!/usr/bin/perl -w # arch-tag: 76b1c3c9-5031-4f64-ae7c-b085fef7670a use strict; my $name = "xatoms"; my $count = 0; my @predefined_atoms = ( "PRIMARY", "SECONDARY", "ARC", "ATOM", "BITMAP", "CARDINAL", "COLORMAP", "CURSOR", "CUT_BUFFER0", "CUT_BUFFER1", "CUT_BUFFER2", "CUT_BUFFER3", "CUT_BUFFER4", "CUT_BUFFER5", "CUT_BUFFER6", "CUT_BUFFER7", "DRAWABLE", "FONT", "INTEGER", "PIXMAP", "POINT", "RECTANGLE", "RESOURCE_MANAGER", "RGB_COLOR_MAP", "RGB_BEST_MAP", "RGB_BLUE_MAP", "RGB_DEFAULT_MAP", "RGB_GRAY_MAP", "RGB_GREEN_MAP", "RGB_RED_MAP", "STRING", "VISUALID", "WINDOW", "WM_COMMAND", "WM_HINTS", "WM_CLIENT_MACHINE", "WM_ICON_NAME", "WM_ICON_SIZE", "WM_NAME", "WM_NORMAL_HINTS", "WM_SIZE_HINTS", "WM_ZOOM_HINTS", "MIN_SPACE", "NORM_SPACE", "MAX_SPACE", "END_SPACE", "SUPERSCRIPT_X", "SUPERSCRIPT_Y", "SUBSCRIPT_X", "SUBSCRIPT_Y", "UNDERLINE_POSITION", "UNDERLINE_THICKNESS", "STRIKEOUT_ASCENT", "STRIKEOUT_DESCENT", "ITALIC_ANGLE", "X_HEIGHT", "QUAD_WIDTH", "WEIGHT", "POINT_SIZE", "RESOLUTION", "COPYRIGHT", "NOTICE", "FONT_NAME", "FAMILY_NAME", "FULL_NAME", "CAP_HEIGHT", "WM_CLASS", "WM_TRANSIENT_FOR" ); open(CF, ">$name.c") or die "cannot open $name.c: $!"; open(HF, ">$name.h") or die "cannot open $name.h: $!"; my $ucname = uc $name; print HF "#ifndef _${ucname}_H\n#define _${ucname}_H\n\n"; print HF "#include \n#include \n\nextern Atom atoms_$name\[];\nvoid intern_$name(Display *dpy);\n\n"; print CF "#include \"$name.h\"\n\n"; print CF "static char *names_$name\[] = {\n"; while (<>) { next if /^\s*(#.*)?$/; my $x = $_; $x =~ s/^\s+//; $x =~ s/\s+$//; next if (grep ($_ eq $x, @predefined_atoms)); print HF "#define XA_$x (atoms_$name\[$count])\n"; print CF "\t\"$x\",\n"; $count++; } print CF "};\n\nAtom atoms_$name\[$count];\n\n"; print CF "void\nintern_$name(Display *dpy)\n{\n"; print CF "\tXInternAtoms(dpy, names_$name, $count, False, atoms_$name);\n" if $count > 0; print CF "}\n"; print HF "\n#endif\n";