aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/X11/FontInfo.c
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-07-21 12:31:09 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-08-25 10:06:49 +0200
commitc350873c7c977efe5210484f04160be45f84ba7e (patch)
tree717d33eb315f4def1307d65108d14715696cd5cf /nx-X11/lib/X11/FontInfo.c
parent1472e7e37838f17b7ed948fa206e8c3434a9d346 (diff)
downloadnx-libs-c350873c7c977efe5210484f04160be45f84ba7e.tar.gz
nx-libs-c350873c7c977efe5210484f04160be45f84ba7e.tar.bz2
nx-libs-c350873c7c977efe5210484f04160be45f84ba7e.zip
Convert nx-X11/lib/ build flow from imake to autotools.
Diffstat (limited to 'nx-X11/lib/X11/FontInfo.c')
-rw-r--r--nx-X11/lib/X11/FontInfo.c227
1 files changed, 0 insertions, 227 deletions
diff --git a/nx-X11/lib/X11/FontInfo.c b/nx-X11/lib/X11/FontInfo.c
deleted file mode 100644
index a2d12c2ec..000000000
--- a/nx-X11/lib/X11/FontInfo.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <limits.h>
-
-#if defined(XF86BIGFONT)
-#define USE_XF86BIGFONT
-#endif
-#ifdef USE_XF86BIGFONT
-extern void _XF86BigfontFreeFontMetrics(
- XFontStruct* /* fs */
-);
-#endif
-
-char **XListFontsWithInfo(
-register Display *dpy,
-_Xconst char *pattern, /* null-terminated */
-int maxNames,
-int *actualCount, /* RETURN */
-XFontStruct **info) /* RETURN */
-{
- unsigned long nbytes;
- unsigned long reply_left; /* unused data left in reply buffer */
- register int i;
- register XFontStruct *fs;
- unsigned int size = 0;
- XFontStruct *finfo = NULL;
- char **flist = NULL;
- xListFontsWithInfoReply reply;
- register xListFontsReq *req;
- int j;
-
- LockDisplay(dpy);
- GetReq(ListFontsWithInfo, req);
- req->maxNames = maxNames;
- nbytes = req->nbytes = pattern ? strlen (pattern) : 0;
- req->length += (nbytes + 3) >> 2;
- _XSend (dpy, pattern, nbytes);
- /* use _XSend instead of Data, since subsequent _XReply will flush buffer */
-
- for (i = 0; ; i++) {
- if (!_XReply (dpy, (xReply *) &reply,
- ((SIZEOF(xListFontsWithInfoReply) -
- SIZEOF(xGenericReply)) >> 2), xFalse)) {
- reply.nameLength = 0; /* avoid trying to read more replies */
- reply_left = 0;
- goto badmem;
- }
- reply_left = reply.length -
- ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply)) >> 2);
- if (reply.nameLength == 0) {
- _XEatDataWords(dpy, reply_left);
- break;
- }
- if (reply.nReplies >= (INT_MAX - i)) /* avoid overflowing size */
- goto badmem;
- if ((i + reply.nReplies) >= size) {
- size = i + reply.nReplies + 1;
-
- if (size >= (INT_MAX / sizeof(XFontStruct)))
- goto badmem;
-
- if (finfo) {
- XFontStruct * tmp_finfo;
- char ** tmp_flist;
-
- tmp_finfo = Xrealloc (finfo, sizeof(XFontStruct) * size);
- if (tmp_finfo)
- finfo = tmp_finfo;
- else
- goto badmem;
-
- tmp_flist = Xrealloc (flist, sizeof(char *) * (size+1));
- if (tmp_flist)
- flist = tmp_flist;
- else
- goto badmem;
- }
- else {
- if (! (finfo = Xmalloc(sizeof(XFontStruct) * size)))
- goto clearwire;
- if (! (flist = Xmalloc(sizeof(char *) * (size+1)))) {
- Xfree(finfo);
- goto clearwire;
- }
- }
- }
- fs = &finfo[i];
-
- fs->ext_data = NULL;
- fs->per_char = NULL;
- fs->fid = None;
- fs->direction = reply.drawDirection;
- fs->min_char_or_byte2 = reply.minCharOrByte2;
- fs->max_char_or_byte2 = reply.maxCharOrByte2;
- fs->min_byte1 = reply.minByte1;
- fs->max_byte1 = reply.maxByte1;
- fs->default_char = reply.defaultChar;
- fs->all_chars_exist = reply.allCharsExist;
- fs->ascent = cvtINT16toInt (reply.fontAscent);
- fs->descent = cvtINT16toInt (reply.fontDescent);
-
- /* XXX the next two statements won't work if short isn't 16 bits */
- fs->min_bounds = * (XCharStruct *) &reply.minBounds;
- fs->max_bounds = * (XCharStruct *) &reply.maxBounds;
-
- fs->n_properties = reply.nFontProps;
- fs->properties = NULL;
- if (fs->n_properties > 0) {
- /* nFontProps is a CARD16 */
- nbytes = reply.nFontProps * SIZEOF(xFontProp);
- if ((nbytes >> 2) <= reply_left) {
- size_t pbytes = reply.nFontProps * sizeof(XFontProp);
- fs->properties = Xmalloc (pbytes);
- }
- if (! fs->properties)
- goto badmem;
- _XRead32 (dpy, (long *)fs->properties, nbytes);
- reply_left -= (nbytes >> 2);
- }
-
- /* nameLength is a CARD8 */
- nbytes = reply.nameLength + 1;
- if (!i)
- nbytes++; /* make first string 1 byte longer, to match XListFonts */
- flist[i] = Xmalloc (nbytes);
- if (! flist[i]) {
- if (finfo[i].properties) Xfree(finfo[i].properties);
- goto badmem;
- }
- if (!i) {
- *flist[0] = 0; /* zero to distinguish from XListFonts */
- flist[0]++;
- }
- flist[i][reply.nameLength] = '\0';
- _XReadPad (dpy, flist[i], (long) reply.nameLength);
- }
- *info = finfo;
- *actualCount = i;
- if (flist)
- flist[i] = NULL; /* required in case XFreeFontNames is called */
- UnlockDisplay(dpy);
- SyncHandle();
- return (flist);
-
-
- badmem:
- /* Free all memory allocated by this function. */
- for (j=(i-1); (j >= 0); j--) {
- if (j == 0)
- flist[j]--; /* was incremented above */
- Xfree(flist[j]);
- if (finfo[j].properties) Xfree(finfo[j].properties);
- }
- Xfree(flist);
- Xfree(finfo);
-
- clearwire:
- /* Clear the wire. */
- _XEatDataWords(dpy, reply_left);
- while ((reply.nameLength != 0) &&
- _XReply(dpy, (xReply *) &reply,
- ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply))
- >> 2), xTrue));
- UnlockDisplay(dpy);
- SyncHandle();
- *info = NULL;
- *actualCount = 0;
- return (char **) NULL;
-}
-
-int
-XFreeFontInfo (
- char **names,
- XFontStruct *info,
- int actualCount)
-{
- register int i;
- if (names) {
- Xfree (names[0]-1);
- for (i = 1; i < actualCount; i++) {
- Xfree (names[i]);
- }
- Xfree(names);
- }
- if (info) {
- for (i = 0; i < actualCount; i++) {
- if (info[i].per_char)
-#ifdef USE_XF86BIGFONT
- _XF86BigfontFreeFontMetrics(&info[i]);
-#else
- Xfree (info[i].per_char);
-#endif
- if (info[i].properties)
- Xfree (info[i].properties);
- }
- Xfree(info);
- }
- return 1;
-}