Standardized on 16-bit shorts. - sam - An updated version of the sam text editor.
 (HTM) git clone git://vernunftzentrum.de/sam.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 7827b57212dabd01b471b7ab821f1862b666dd07
 (DIR) parent 7db039abc42d7c4c57e80b7c3856938bae6ead98
 (HTM) Author: Rob King <jking@deadpixi.com>
       Date:   Tue, 27 Sep 2016 11:21:48 -0500
       
       Standardized on 16-bit shorts.
       
       Diffstat:
         include/frame.h                     |      22 +++++++++++-----------
         include/libg.h                      |       2 +-
         include/u.h                         |       1 -
         libXg/gwin.c                        |      10 +++++-----
         libXg/latin1.c                      |      12 +++++++-----
         sam/file.c                          |      12 ++++++------
         sam/mesg.c                          |       8 ++++----
         sam/multi.c                         |       2 +-
         sam/parse.h                         |       8 ++++----
         sam/sam.h                           |      32 ++++++++++++++++----------------
         samterm/menu.c                      |       2 +-
         samterm/mesg.c                      |       4 ++--
         samterm/samterm.h                   |      10 +++++-----
       
       13 files changed, 63 insertions(+), 62 deletions(-)
       ---
 (DIR) diff --git a/include/frame.h b/include/frame.h
       @@ -10,8 +10,8 @@ struct Frbox
            union{
                uchar   *ptr;
                struct{
       -            short   bc; /* break char */
       -            short   minwid;
       +            int16_t   bc; /* break char */
       +            int16_t   minwid;
                } b;
            } a;
        };
       @@ -28,15 +28,15 @@ struct Frame
            Rectangle   entire;     /* of full frame */
            Frbox       *box;
            uint64_t       p0, p1;     /* selection */
       -    short       left;       /* left edge of text */
       -    ushort      nbox, nalloc;
       -    ushort      maxtab;     /* max size of tab, in pixels */
       -    ushort      fheight;    /* font height, in pixels */
       -    ushort      nchars;     /* # runes in frame */
       -    ushort      nlines;     /* # lines with text */
       -    ushort      maxlines;   /* total # lines in frame */
       -    ushort      lastlinefull;   /* last line fills frame */
       -    ushort      modified;   /* changed since frselect() */
       +    int16_t       left;       /* left edge of text */
       +    uint16_t      nbox, nalloc;
       +    uint16_t      maxtab;     /* max size of tab, in pixels */
       +    uint16_t      fheight;    /* font height, in pixels */
       +    uint16_t      nchars;     /* # runes in frame */
       +    uint16_t      nlines;     /* # lines with text */
       +    uint16_t      maxlines;   /* total # lines in frame */
       +    uint16_t      lastlinefull;   /* last line fills frame */
       +    uint16_t      modified;   /* changed since frselect() */
        };
        
        uint64_t   frcharofpt(Frame*, Point);
 (DIR) diff --git a/include/libg.h b/include/libg.h
       @@ -156,7 +156,7 @@ enum    Fcode
        
        typedef void     (*Errfunc)(char *);
        
       -extern void addlatin(char, char, short);
       +extern void addlatin(char, char, int16_t);
        extern Point     add(Point, Point);
        extern Point     sub(Point, Point);
        extern Point     mul(Point, int);
 (DIR) diff --git a/include/u.h b/include/u.h
       @@ -9,6 +9,5 @@
        #include <unistd.h>
        #include <wchar.h>
        
       -typedef uint16_t ushort;
        typedef uint8_t  uchar;
        typedef uint16_t  Rune;
 (DIR) diff --git a/libXg/gwin.c b/libXg/gwin.c
       @@ -164,7 +164,7 @@ Mappingaction(Widget w, XEvent *e, String *p, Cardinal *np)
        typedef struct Unikeysym Unikeysym;
        struct Unikeysym{
            KeySym keysym;
       -    unsigned short value;
       +    uint16_t value;
        };
        
        Unikeysym unikeysyms[] ={
       @@ -172,7 +172,7 @@ Unikeysym unikeysyms[] ={
            {0, 0}
        };
        
       -unsigned short
       +uint16_t
        keysymtoshort(KeySym k)
        {
            for (Unikeysym *ks = unikeysyms; ks->keysym != 0; ks++){
       @@ -334,13 +334,13 @@ Keyaction(Widget w, XEvent *e, String *p, Cardinal *np)
                    if ((k < '0') || (k > 'f') ||
                            ((k > '9') && (k < 'a'))) {
                        STUFFCOMPOSE();
       -                c = (unsigned short)k;
       +                c = (uint16_t)k;
                        composing = -2;
                    } else if (composing == 4) {
                        c = unicode(compose);
                        if (c == -1) {
                            STUFFCOMPOSE();
       -                    c = (unsigned short)compose[4];
       +                    c = (uint16_t)compose[4];
                        }
                        composing = -2;
                    }
       @@ -348,7 +348,7 @@ Keyaction(Widget w, XEvent *e, String *p, Cardinal *np)
                    c = (int)latin1(compose);
                    if (c == -1) {
                        STUFFCOMPOSE();
       -                c = (unsigned short)compose[1];
       +                c = (uint16_t)compose[1];
                    }
                    composing = -2;
                }
 (DIR) diff --git a/libXg/latin1.c b/libXg/latin1.c
       @@ -1,6 +1,8 @@
        /* Copyright (c) 1998 Lucent Technologies - All rights reserved. */
       -/* Changes copyright 2014-2014 Rob King. */
       +/* Changes copyright 2014-2016 Rob King. */
        
       +#include <inttypes.h>
       +#include <stdint.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
       @@ -9,7 +11,7 @@
        
        struct latin
        {
       -    unsigned short  l;
       +    uint16_t  l;
            unsigned char   c[2];
        };
        
       @@ -233,7 +235,7 @@ freelatin(void)
        }
        
        void
       -addlatin(char c0, char c1, short l)
       +addlatin(char c0, char c1, int16_t l)
        {
            static int i = 0;
        
       @@ -263,8 +265,8 @@ initlatin(void)
                return;
        
            unsigned char c0, c1;
       -    unsigned short l;
       -    while (fscanf(keyboard, " %c%c %hx%*[^\n]\n", &c0, &c1, &l) == 3)
       +    uint16_t l;
       +    while (fscanf(keyboard, " %c%c %" SCNx16 "%*[^\n]\n", &c0, &c1, &l) == 3)
                addlatin(c0, c1, l);
        
            fclose(keyboard);
 (DIR) diff --git a/sam/file.c b/sam/file.c
       @@ -10,9 +10,9 @@ static String   *ftempstr(Rune*, int);
        int     fcount;
        File        *lastfile;
        
       -void    puthdr_csl(Buffer*, char, short, Posn);
       -void    puthdr_cs(Buffer*, char, short);
       -void    puthdr_M(Buffer*, Posn, Range, Range, Mod, short);
       +void    puthdr_csl(Buffer*, char, int16_t, Posn);
       +void    puthdr_cs(Buffer*, char, int16_t);
       +void    puthdr_M(Buffer*, Posn, Range, Range, Mod, int16_t);
        void    puthdr_cll(Buffer*, char, Posn, Posn);
        void    Fflush(File*);
        
       @@ -351,7 +351,7 @@ Fupdate(File *f, int mktrans, int toterm)
        }
        
        void
       -puthdr_csl(Buffer *b, char c, short s, Posn p)
       +puthdr_csl(Buffer *b, char c, int16_t s, Posn p)
        {
            struct _csl buf;
        
       @@ -364,7 +364,7 @@ puthdr_csl(Buffer *b, char c, short s, Posn p)
        }
        
        void
       -puthdr_cs(Buffer *b, char c, short s)
       +puthdr_cs(Buffer *b, char c, int16_t s)
        {
            struct _cs buf;
        
       @@ -374,7 +374,7 @@ puthdr_cs(Buffer *b, char c, short s)
        }
        
        void
       -puthdr_M(Buffer *b, Posn p, Range dot, Range mk, Mod m, short s1)
       +puthdr_M(Buffer *b, Posn p, Range dot, Range mk, Mod m, int16_t s1)
        {
            Mark mark;
            static int first = 1;
 (DIR) diff --git a/sam/mesg.c b/sam/mesg.c
       @@ -88,7 +88,7 @@ void
        journaln(int out, int64_t n)
        {
            char buf[32];
       -    sprint(buf, sizeof (int64_t) > 4 ? "%ld" : "%d", n);
       +    sprint(buf, PRId64, n);
            journal(out, buf);
        }
        #else
       @@ -171,7 +171,7 @@ inmesg(Tmesg type)
        {
            Rune buf[1025];
            int i, m;
       -    short s;
       +    int16_t s;
            int64_t l, l1, l2;
            File *f;
            Posn p0, p1;
       @@ -449,7 +449,7 @@ inmesg(Tmesg type)
                c = 0;
                i = 0;
                m = snarfbuf->nrunes;
       -        if(m > 32000) {     /* tmprstr stores len in a short */
       +        if(m > 32000) {     /* tmprstr stores len in a int16_t */
                    m = 32000;
                    dprint("?warning: snarf buffer truncated\n");
                }
       @@ -516,7 +516,7 @@ snarf(File *f, Posn p1, Posn p2, Buffer *buf, int emptyok)
        int
        inshort(void)
        {
       -    ushort n;
       +    uint16_t n;
        
            n = inp[0] | (inp[1]<<8);
            inp += 2;
 (DIR) diff --git a/sam/multi.c b/sam/multi.c
       @@ -4,7 +4,7 @@
        #include <libgen.h>
        
        List    file;
       -ushort  tag;
       +uint16_t  tag;
        
        File *
        newfile(void)
 (DIR) diff --git a/sam/parse.h b/sam/parse.h
       @@ -25,9 +25,9 @@ struct Cmd
                Addr    *addr;      /* address for m, t */
            } g;
            Cmd *next;          /* pointer to next element in {} */
       -    short   num;
       -    ushort  flag;           /* whatever */
       -    ushort  cmdc;           /* command character; 'x' etc. */
       +    int16_t   num;
       +    uint16_t  flag;           /* whatever */
       +    uint16_t  cmdc;           /* command character; 'x' etc. */
        };
        
        #define ccmd    g.cmd
       @@ -35,7 +35,7 @@ struct Cmd
        #define caddr   g.addr
        
        extern struct cmdtab{
       -    ushort  cmdc;       /* command character */
       +    uint16_t  cmdc;       /* command character */
            uchar   text;       /* takes a textual argument? */
            uchar   regexp;     /* takes a regular expression? */
            uchar   addr;       /* takes an address (m or t)? */
 (DIR) diff --git a/sam/sam.h b/sam/sam.h
       @@ -21,7 +21,7 @@
        #define STRSIZE     (2*BLOCKSIZE)
        
        typedef int64_t        Posn;       /* file position or address */
       -typedef ushort      Mod;        /* modification number */
       +typedef uint16_t      Mod;        /* modification number */
        
        typedef struct Address  Address;
        typedef struct Block    Block;
       @@ -85,7 +85,7 @@ struct List /* code depends on a int64_t being able to hold a pointer */
        /*
         * Block must fit in a int64_t because the list routines manage arrays of
         * blocks.  Two problems: some machines (e.g. Cray) can't pull this off
       - * -- on them, use bitfields -- and the ushort bnum limits temp file sizes
       + * -- on them, use bitfields -- and the uint16_t bnum limits temp file sizes
         * to about 200 megabytes.  Advantages: small, simple code and small
         * memory overhead.  If you really want to edit huge files, making BLOCKSIZE
         * bigger is the easiest way.
       @@ -93,19 +93,19 @@ struct List /* code depends on a int64_t being able to hold a pointer */
        * The necessary conditions are even stronger:
        *      sizeof(struct Block)==sizeof(int64_t)
        *   && the first 32 bits must hold bnum and nrunes.
       -* When sizeof(ushort)+sizeof(short) < sizeof(int64_t),
       +* When sizeof(uint16_t)+sizeof(int16_t) < sizeof(int64_t),
        * add padding at the beginning on a little endian and at
        * the end on a big endian, as shown below for the DEC Alpha.
         */
        struct Block
        {
        #if USE64BITS == 1
       -    char    pad[sizeof(int64_t)-sizeof(ushort)-sizeof(short)];
       +    char    pad[sizeof(int64_t)-sizeof(uint16_t)-sizeof(int16_t)];
        #endif
       -    ushort  bnum;       /* absolute number on disk */
       -    short   nrunes;     /* runes stored in this block */
       +    uint16_t  bnum;       /* absolute number on disk */
       +    int16_t   nrunes;     /* runes stored in this block */
        #if USE64BITS == 2
       -    char    pad[sizeof(int64_t)-sizeof(ushort)-sizeof(short)];
       +    char    pad[sizeof(int64_t)-sizeof(uint16_t)-sizeof(int16_t)];
        #endif
        };
        
       @@ -125,8 +125,8 @@ struct Disc
        
        struct String
        {
       -    short   n;
       -    short   size;
       +    int16_t   n;
       +    int16_t   size;
            Rune    *s;
        };
        
       @@ -156,7 +156,7 @@ struct File
            Range   mark;       /* tagged spot in text (don't confuse with Mark) */
            List    *rasp;      /* map of what terminal's got */
            String  name;       /* file name */
       -    short   tag;        /* for communicating with terminal */
       +    int16_t   tag;        /* for communicating with terminal */
            char    state;      /* Clean, Dirty, Unread, or Readerr*/
            char    closeok;    /* ok to close file? */
            char    deleted;    /* delete at completion of command */
       @@ -180,7 +180,7 @@ struct Mark
            Range   dot;
            Range   mark;
            Mod m;
       -    short   s1;
       +    int16_t   s1;
        };
        
        /*
       @@ -191,18 +191,18 @@ union Hdr
        {
            struct _csl
            {
       -        short   c;
       -        short   s;
       +        int16_t   c;
       +        int16_t   s;
                int64_t    l;
            }csl;
            struct _cs
            {
       -        short   c;
       -        short   s;
       +        int16_t   c;
       +        int16_t   s;
            }cs;
            struct _cll
            {
       -        short   c;
       +        int16_t   c;
                int64_t    l;
                int64_t    l1;
            }cll;
 (DIR) diff --git a/samterm/menu.c b/samterm/menu.c
       @@ -8,7 +8,7 @@
        
        uchar   *name[MAXFILES];    /* first byte is ' ' or '\'': modified state */
        Text    *text[MAXFILES];    /* pointer to Text associated with file */
       -ushort  tag[MAXFILES];      /* text[i].tag, even if text[i] not defined */
       +uint16_t  tag[MAXFILES];      /* text[i].tag, even if text[i] not defined */
        int nname;
        int mw;
        
 (DIR) diff --git a/samterm/mesg.c b/samterm/mesg.c
       @@ -10,11 +10,11 @@
        extern char *exname;
        extern Flayer *flast;
        
       -#define HSIZE   3   /* Type + short count */
       +#define HSIZE   3   /* Type + int16_t count */
        Header  h;
        uchar   indata[DATASIZE+1]; /* room for NUL */
        uchar   outdata[DATASIZE];
       -short   outcount;
       +int16_t   outcount;
        int hversion;
        
        void    inmesg(Hmesg, int);
 (DIR) diff --git a/samterm/samterm.h b/samterm/samterm.h
       @@ -56,14 +56,14 @@ struct Rasp
            Section *sect;
        };
        
       -#define Untagged    ((ushort)65535)
       +#define Untagged    ((uint16_t)65535)
        
        struct Text
        {
            Rasp    rasp;
       -    short   nwin;
       -    short   front;      /* input window */
       -    ushort  tag;
       +    int16_t   nwin;
       +    int16_t   front;      /* input window */
       +    uint16_t  tag;
            char    lock;
            Flayer  l[NL];      /* screen storage */
        };
       @@ -80,7 +80,7 @@ enum Resource
        
        extern Text *text[];
        extern uchar    *name[];
       -extern ushort   tag[];
       +extern uint16_t   tag[];
        extern int  nname;
        extern unsigned int cursor;
        extern Flayer   *which;