diff options
author | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
commit | 76bcc36ed305418a3ddc5752d287ede894243e1b (patch) | |
tree | bacb320c825768471ce56f058f17ce863d592376 /xorg-server/dix/registry.c | |
parent | 7d894e32566b710952c44cbc71939ad1d9e2fa8d (diff) | |
parent | 0f834b91a4768673833ab4917e87d86c237bb1a6 (diff) | |
download | vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.gz vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.bz2 vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
pixman/pixman/pixman-mmx.c
xorg-server/Xext/shm.c
xorg-server/Xext/syncsrv.h
xorg-server/Xext/xvmain.c
xorg-server/Xi/exevents.c
xorg-server/Xi/opendev.c
xorg-server/composite/compalloc.c
xorg-server/composite/compoverlay.c
xorg-server/dix/colormap.c
xorg-server/dix/devices.c
xorg-server/dix/dispatch.c
xorg-server/dix/dixfonts.c
xorg-server/dix/eventconvert.c
xorg-server/dix/events.c
xorg-server/dix/gc.c
xorg-server/dix/getevents.c
xorg-server/dix/main.c
xorg-server/dix/privates.c
xorg-server/dix/registry.c
xorg-server/dix/resource.c
xorg-server/exa/exa_accel.c
xorg-server/exa/exa_migration_classic.c
xorg-server/exa/exa_unaccel.c
xorg-server/fb/fb.h
xorg-server/fb/fbcopy.c
xorg-server/fb/fbpixmap.c
xorg-server/glx/dispatch.h
xorg-server/glx/glapi.h
xorg-server/glx/glapi_gentable.c
xorg-server/glx/glapitable.h
xorg-server/glx/glprocs.h
xorg-server/glx/glxcmds.c
xorg-server/glx/glxcmdsswap.c
xorg-server/glx/glxdricommon.c
xorg-server/glx/glxdriswrast.c
xorg-server/glx/glxext.c
xorg-server/glx/indirect_dispatch.c
xorg-server/glx/indirect_dispatch.h
xorg-server/glx/indirect_dispatch_swap.c
xorg-server/glx/indirect_size.h
xorg-server/glx/indirect_size_get.h
xorg-server/glx/indirect_table.c
xorg-server/glx/indirect_util.c
xorg-server/glx/rensize.c
xorg-server/glx/single2swap.c
xorg-server/glx/singlepix.c
xorg-server/glx/singlepixswap.c
xorg-server/glx/singlesize.c
xorg-server/hw/dmx/dmxinit.c
xorg-server/hw/kdrive/ephyr/ephyr.c
xorg-server/hw/kdrive/ephyr/hostx.c
xorg-server/hw/kdrive/ephyr/hostx.h
xorg-server/hw/kdrive/src/kinput.c
xorg-server/hw/xfree86/common/compiler.h
xorg-server/hw/xwin/InitInput.c
xorg-server/hw/xwin/InitOutput.c
xorg-server/hw/xwin/ddraw.h
xorg-server/hw/xwin/glx/glwrap.c
xorg-server/hw/xwin/glx/indirect.c
xorg-server/hw/xwin/glx/wgl_ext_api.h
xorg-server/hw/xwin/glx/winpriv.c
xorg-server/hw/xwin/win.h
xorg-server/hw/xwin/winallpriv.c
xorg-server/hw/xwin/winauth.c
xorg-server/hw/xwin/winclipboard.h
xorg-server/hw/xwin/winclipboardinit.c
xorg-server/hw/xwin/winclipboardthread.c
xorg-server/hw/xwin/winclipboardunicode.c
xorg-server/hw/xwin/winclipboardwndproc.c
xorg-server/hw/xwin/winclipboardwrappers.c
xorg-server/hw/xwin/winclipboardxevents.c
xorg-server/hw/xwin/wincmap.c
xorg-server/hw/xwin/winconfig.c
xorg-server/hw/xwin/wincreatewnd.c
xorg-server/hw/xwin/wincursor.c
xorg-server/hw/xwin/windialogs.c
xorg-server/hw/xwin/winengine.c
xorg-server/hw/xwin/winerror.c
xorg-server/hw/xwin/wingc.c
xorg-server/hw/xwin/wingetsp.c
xorg-server/hw/xwin/winkeybd.c
xorg-server/hw/xwin/winkeybd.h
xorg-server/hw/xwin/winlayouts.h
xorg-server/hw/xwin/winmisc.c
xorg-server/hw/xwin/winmonitors.c
xorg-server/hw/xwin/winmouse.c
xorg-server/hw/xwin/winmsg.c
xorg-server/hw/xwin/winmsg.h
xorg-server/hw/xwin/winmultiwindowclass.c
xorg-server/hw/xwin/winmultiwindowicons.c
xorg-server/hw/xwin/winmultiwindowshape.c
xorg-server/hw/xwin/winmultiwindowwindow.c
xorg-server/hw/xwin/winmultiwindowwm.c
xorg-server/hw/xwin/winmultiwindowwndproc.c
xorg-server/hw/xwin/winnativegdi.c
xorg-server/hw/xwin/winpfbdd.c
xorg-server/hw/xwin/winpixmap.c
xorg-server/hw/xwin/winpolyline.c
xorg-server/hw/xwin/winprefs.c
xorg-server/hw/xwin/winprocarg.c
xorg-server/hw/xwin/winregistry.c
xorg-server/hw/xwin/winscrinit.c
xorg-server/hw/xwin/winsetsp.c
xorg-server/hw/xwin/winshaddd.c
xorg-server/hw/xwin/winshadddnl.c
xorg-server/hw/xwin/winshadgdi.c
xorg-server/hw/xwin/wintrayicon.c
xorg-server/hw/xwin/winwin32rootless.c
xorg-server/hw/xwin/winwin32rootlesswindow.c
xorg-server/hw/xwin/winwin32rootlesswndproc.c
xorg-server/hw/xwin/winwindow.c
xorg-server/hw/xwin/winwindow.h
xorg-server/hw/xwin/winwindowswm.c
xorg-server/hw/xwin/winwndproc.c
xorg-server/include/callback.h
xorg-server/include/dixstruct.h
xorg-server/include/misc.h
xorg-server/include/os.h
xorg-server/include/scrnintstr.h
xorg-server/mi/micmap.c
xorg-server/mi/miinitext.c
xorg-server/mi/mioverlay.c
xorg-server/mi/misprite.c
xorg-server/mi/mivaltree.c
xorg-server/mi/miwindow.c
xorg-server/miext/damage/damage.c
xorg-server/miext/rootless/rootlessGC.c
xorg-server/miext/rootless/rootlessWindow.c
xorg-server/os/WaitFor.c
xorg-server/os/access.c
xorg-server/os/connection.c
xorg-server/os/io.c
xorg-server/os/log.c
xorg-server/os/osinit.c
xorg-server/os/utils.c
xorg-server/os/xdmcp.c
xorg-server/os/xprintf.c
xorg-server/os/xstrans.c
xorg-server/render/mipict.c
xorg-server/xkb/xkbActions.c
xorg-server/xkb/xkbInit.c
xorg-server/xkeyboard-config/compat/default.in
Diffstat (limited to 'xorg-server/dix/registry.c')
-rw-r--r-- | xorg-server/dix/registry.c | 247 |
1 files changed, 127 insertions, 120 deletions
diff --git a/xorg-server/dix/registry.c b/xorg-server/dix/registry.c index 319973920..18344f417 100644 --- a/xorg-server/dix/registry.c +++ b/xorg-server/dix/registry.c @@ -49,43 +49,45 @@ static unsigned nmajor, *nminor, nevent, nerror, nresource; /* * File parsing routines */ -static int double_size(void *p, unsigned n, unsigned size) +static int +double_size(void *p, unsigned n, unsigned size) { - char **ptr = (char **)p; + char **ptr = (char **) p; unsigned s, f; if (n) { - s = n * size; - n *= 2 * size; - f = n; - } else { - s = 0; - n = f = BASE_SIZE * size; + s = n * size; + n *= 2 * size; + f = n; + } + else { + s = 0; + n = f = BASE_SIZE * size; } *ptr = realloc(*ptr, n); if (!*ptr) { - dixResetRegistry(); - return FALSE; + dixResetRegistry(); + return FALSE; } memset(*ptr + s, 0, f - s); return TRUE; -} +} static void RegisterRequestName(unsigned major, unsigned minor, char *name) { while (major >= nmajor) { - if (!double_size(&requests, nmajor, sizeof(char **))) - return; - if (!double_size(&nminor, nmajor, sizeof(unsigned))) - return; - nmajor = nmajor ? nmajor * 2 : BASE_SIZE; + if (!double_size(&requests, nmajor, sizeof(char **))) + return; + if (!double_size(&nminor, nmajor, sizeof(unsigned))) + return; + nmajor = nmajor ? nmajor * 2 : BASE_SIZE; } while (minor >= nminor[major]) { - if (!double_size(requests+major, nminor[major], sizeof(char *))) - return; - nminor[major] = nminor[major] ? nminor[major] * 2 : BASE_SIZE; + if (!double_size(requests + major, nminor[major], sizeof(char *))) + return; + nminor[major] = nminor[major] ? nminor[major] * 2 : BASE_SIZE; } free(requests[major][minor]); @@ -93,11 +95,12 @@ RegisterRequestName(unsigned major, unsigned minor, char *name) } static void -RegisterEventName(unsigned event, char *name) { +RegisterEventName(unsigned event, char *name) +{ while (event >= nevent) { - if (!double_size(&events, nevent, sizeof(char *))) - return; - nevent = nevent ? nevent * 2 : BASE_SIZE; + if (!double_size(&events, nevent, sizeof(char *))) + return; + nevent = nevent ? nevent * 2 : BASE_SIZE; } free(events[event]); @@ -105,11 +108,12 @@ RegisterEventName(unsigned event, char *name) { } static void -RegisterErrorName(unsigned error, char *name) { +RegisterErrorName(unsigned error, char *name) +{ while (error >= nerror) { - if (!double_size(&errors, nerror, sizeof(char *))) - return; - nerror = nerror ? nerror * 2 : BASE_SIZE; + if (!double_size(&errors, nerror, sizeof(char *))) + return; + nerror = nerror ? nerror * 2 : BASE_SIZE; } free(errors[error]); @@ -117,80 +121,80 @@ RegisterErrorName(unsigned error, char *name) { } void -RegisterExtensionNames(ExtensionEntry *extEntry) +RegisterExtensionNames(ExtensionEntry * extEntry) { char buf[256], *lineobj, *ptr; unsigned offset; if (fh == NULL) - return; + return; rewind(fh); while (fgets(buf, sizeof(buf), fh)) { - lineobj = NULL; - ptr = strchr(buf, '\n'); - if (ptr) - *ptr = 0; - - /* Check for comments or empty lines */ - switch (buf[0]) { - case PROT_REQUEST: - case PROT_EVENT: - case PROT_ERROR: - break; - case PROT_COMMENT: - case '\0': - continue; - default: - goto invalid; - } - - /* Check for space character in the fifth position */ - ptr = strchr(buf, ' '); - if (!ptr || ptr != buf + 4) - goto invalid; - - /* Duplicate the string after the space */ - lineobj = strdup(ptr + 1); - if (!lineobj) - continue; - - /* Check for a colon somewhere on the line */ - ptr = strchr(buf, ':'); - if (!ptr) - goto invalid; - - /* Compare the part before colon with the target extension name */ - *ptr = 0; - if (strcmp(buf + 5, extEntry->name)) - goto skip; - - /* Get the opcode for the request, event, or error */ - offset = strtol(buf + 1, &ptr, 10); - if (offset == 0 && ptr == buf + 1) - goto invalid; - - /* Save the strdup result in the registry */ - switch(buf[0]) { - case PROT_REQUEST: - if (extEntry->base) - RegisterRequestName(extEntry->base, offset, lineobj); - else - RegisterRequestName(offset, 0, lineobj); - continue; - case PROT_EVENT: - RegisterEventName(extEntry->eventBase + offset, lineobj); - continue; - case PROT_ERROR: - RegisterErrorName(extEntry->errorBase + offset, lineobj); - continue; - } - - invalid: - LogMessage(X_WARNING, "Invalid line in " FILENAME ", skipping\n"); - skip: - free(lineobj); + lineobj = NULL; + ptr = strchr(buf, '\n'); + if (ptr) + *ptr = 0; + + /* Check for comments or empty lines */ + switch (buf[0]) { + case PROT_REQUEST: + case PROT_EVENT: + case PROT_ERROR: + break; + case PROT_COMMENT: + case '\0': + continue; + default: + goto invalid; + } + + /* Check for space character in the fifth position */ + ptr = strchr(buf, ' '); + if (!ptr || ptr != buf + 4) + goto invalid; + + /* Duplicate the string after the space */ + lineobj = strdup(ptr + 1); + if (!lineobj) + continue; + + /* Check for a colon somewhere on the line */ + ptr = strchr(buf, ':'); + if (!ptr) + goto invalid; + + /* Compare the part before colon with the target extension name */ + *ptr = 0; + if (strcmp(buf + 5, extEntry->name)) + goto skip; + + /* Get the opcode for the request, event, or error */ + offset = strtol(buf + 1, &ptr, 10); + if (offset == 0 && ptr == buf + 1) + goto invalid; + + /* Save the strdup result in the registry */ + switch (buf[0]) { + case PROT_REQUEST: + if (extEntry->base) + RegisterRequestName(extEntry->base, offset, lineobj); + else + RegisterRequestName(offset, 0, lineobj); + continue; + case PROT_EVENT: + RegisterEventName(extEntry->eventBase + offset, lineobj); + continue; + case PROT_ERROR: + RegisterErrorName(extEntry->errorBase + offset, lineobj); + continue; + } + + invalid: + LogMessage(X_WARNING, "Invalid line in " FILENAME ", skipping\n"); + skip: + free(lineobj); } } @@ -204,9 +208,9 @@ RegisterResourceName(RESTYPE resource, const char *name) resource &= TypeMask; while (resource >= nresource) { - if (!double_size((void*)&resources, nresource, sizeof(char *))) - return; - nresource = nresource ? nresource * 2 : BASE_SIZE; + if (!double_size((void*)&resources, nresource, sizeof(char *))) + return; + nresource = nresource ? nresource * 2 : BASE_SIZE; } resources[resource] = name; @@ -220,9 +224,9 @@ const char * LookupRequestName(int major, int minor) { if (major >= nmajor) - return XREGISTRY_UNKNOWN; + return XREGISTRY_UNKNOWN; if (minor >= nminor[major]) - return XREGISTRY_UNKNOWN; + return XREGISTRY_UNKNOWN; return requests[major][minor] ? requests[major][minor] : XREGISTRY_UNKNOWN; } @@ -231,18 +235,20 @@ const char * LookupMajorName(int major) { if (major < 128) { - const char *retval; - - if (major >= nmajor) - return XREGISTRY_UNKNOWN; - if (0 >= nminor[major]) - return XREGISTRY_UNKNOWN; - - retval = requests[major][0]; - return retval ? retval + sizeof(CORE) : XREGISTRY_UNKNOWN; - } else { - ExtensionEntry *extEntry = GetExtensionEntry(major); - return extEntry ? extEntry->name : XREGISTRY_UNKNOWN; + const char *retval; + + if (major >= nmajor) + return XREGISTRY_UNKNOWN; + if (0 >= nminor[major]) + return XREGISTRY_UNKNOWN; + + retval = requests[major][0]; + return retval ? retval + sizeof(CORE) : XREGISTRY_UNKNOWN; + } + else { + ExtensionEntry *extEntry = GetExtensionEntry(major); + + return extEntry ? extEntry->name : XREGISTRY_UNKNOWN; } } @@ -251,7 +257,7 @@ LookupEventName(int event) { event &= 127; if (event >= nevent) - return XREGISTRY_UNKNOWN; + return XREGISTRY_UNKNOWN; return events[event] ? events[event] : XREGISTRY_UNKNOWN; } @@ -260,7 +266,7 @@ const char * LookupErrorName(int error) { if (error >= nerror) - return XREGISTRY_UNKNOWN; + return XREGISTRY_UNKNOWN; return errors[error] ? errors[error] : XREGISTRY_UNKNOWN; } @@ -270,7 +276,7 @@ LookupResourceName(RESTYPE resource) { resource &= TypeMask; if (resource >= nresource) - return XREGISTRY_UNKNOWN; + return XREGISTRY_UNKNOWN; return resources[resource] ? resources[resource] : XREGISTRY_UNKNOWN; } @@ -285,19 +291,19 @@ dixResetRegistry(void) /* Free all memory */ while (nmajor--) { - while (nminor[nmajor]) - free(requests[nmajor][--nminor[nmajor]]); - free(requests[nmajor]); + while (nminor[nmajor]) + free(requests[nmajor][--nminor[nmajor]]); + free(requests[nmajor]); } free(requests); free(nminor); while (nevent--) - free(events[nevent]); + free(events[nevent]); free(events); while (nerror--) - free(errors[nerror]); + free(errors[nerror]); free(errors); free((void*)resources); @@ -312,10 +318,11 @@ dixResetRegistry(void) /* Open the protocol file */ if (fh) - fclose(fh); + fclose(fh); fh = fopen(FILENAME, "r"); if (!fh) - LogMessage(X_WARNING, "Failed to open protocol names file " FILENAME "\n"); + LogMessage(X_WARNING, + "Failed to open protocol names file " FILENAME "\n"); /* Add built-in resources */ RegisterResourceName(RT_NONE, "NONE"); @@ -335,4 +342,4 @@ dixResetRegistry(void) RegisterExtensionNames(&extEntry); } -#endif /* XREGISTRY */ +#endif /* XREGISTRY */ |