Annotation of embedaddon/php/ext/gd/libgd/gd_io.c, revision 1.1.1.1

1.1       misho       1: 
                      2: 
                      3: /*
                      4:    * io.c
                      5:    *
                      6:    * Implements the simple I/O 'helper' routines.
                      7:    *
                      8:    * Not really essential, but these routines were used extensively in GD,
                      9:    * so they were moved here. They also make IOCtx calls look better...
                     10:    *
                     11:    * Written (or, at least, moved) 1999, Philip Warner.
                     12:    *
                     13:  */
                     14: 
                     15: #include <math.h>
                     16: #include <string.h>
                     17: #include <stdlib.h>
                     18: #include "gd.h"
                     19: 
                     20: /* Use this for commenting out debug-print statements. */
                     21: /* Just use the first '#define' to allow all the prints... */
                     22: /*#define IO_DBG(s) (s) */
                     23: #define IO_DBG(s)
                     24: 
                     25: 
                     26: #define GD_IO_EOF_CHK(r)       \
                     27:        if (r == EOF) {         \
                     28:                return 0;       \
                     29:        }                       \
                     30: 
                     31: /*
                     32:  * Write out a word to the I/O context pointer
                     33:  */
                     34: void Putword (int w, gdIOCtx * ctx)
                     35: {
                     36:        unsigned char buf[2];
                     37: 
                     38:        buf[0] = w & 0xff;
                     39:        buf[1] = (w / 256) & 0xff;
                     40:        (ctx->putBuf) (ctx, (char *) buf, 2);
                     41: }
                     42: 
                     43: void Putchar (int c, gdIOCtx * ctx)
                     44: {
                     45:        (ctx->putC) (ctx, c & 0xff);
                     46: }
                     47: 
                     48: void gdPutC (const unsigned char c, gdIOCtx * ctx)
                     49: {
                     50:        (ctx->putC) (ctx, c);
                     51: }
                     52: 
                     53: void gdPutWord (int w, gdIOCtx * ctx)
                     54: {
                     55:        IO_DBG (php_gd_error("Putting word..."));
                     56:        (ctx->putC) (ctx, (unsigned char) (w >> 8));
                     57:        (ctx->putC) (ctx, (unsigned char) (w & 0xFF));
                     58:        IO_DBG (php_gd_error("put."));
                     59: }
                     60: 
                     61: void gdPutInt (int w, gdIOCtx * ctx)
                     62: {
                     63:        IO_DBG (php_gd_error("Putting int..."));
                     64:        (ctx->putC) (ctx, (unsigned char) (w >> 24));
                     65:        (ctx->putC) (ctx, (unsigned char) ((w >> 16) & 0xFF));
                     66:        (ctx->putC) (ctx, (unsigned char) ((w >> 8) & 0xFF));
                     67:        (ctx->putC) (ctx, (unsigned char) (w & 0xFF));
                     68:        IO_DBG (php_gd_error("put."));
                     69: }
                     70: 
                     71: int gdGetC (gdIOCtx * ctx)
                     72: {
                     73:        return ((ctx->getC) (ctx));
                     74: }
                     75: 
                     76: int gdGetByte (int *result, gdIOCtx * ctx)
                     77: {
                     78:        int r;
                     79:        r = (ctx->getC) (ctx);
                     80:        GD_IO_EOF_CHK(r);
                     81:        *result = r;
                     82:        return 1;
                     83: }
                     84: 
                     85: int gdGetWord (int *result, gdIOCtx * ctx)
                     86: {
                     87:        int r;
                     88:        r = (ctx->getC) (ctx);
                     89:        GD_IO_EOF_CHK(r);
                     90:        *result = r << 8;
                     91:        r = (ctx->getC) (ctx);
                     92:        GD_IO_EOF_CHK(r);
                     93:        *result += r;
                     94:        return 1;
                     95: }
                     96: 
                     97: 
                     98: int gdGetInt (int *result, gdIOCtx * ctx)
                     99: {
                    100:        int r;
                    101:        r = (ctx->getC) (ctx);
                    102:        GD_IO_EOF_CHK(r);
                    103:        *result = r << 24;
                    104: 
                    105:        r = (ctx->getC) (ctx);
                    106:        GD_IO_EOF_CHK(r);
                    107:        *result += r << 16;
                    108: 
                    109:        r = (ctx->getC) (ctx);
                    110:        if (r == EOF) {
                    111:                return 0;
                    112:        }
                    113:        *result += r << 8;
                    114: 
                    115:        r = (ctx->getC) (ctx);
                    116:        GD_IO_EOF_CHK(r);
                    117:        *result += r;
                    118: 
                    119:        return 1;
                    120: }
                    121: 
                    122: int gdPutBuf (const void *buf, int size, gdIOCtx * ctx)
                    123: {
                    124:        IO_DBG (php_gd_error("Putting buf..."));
                    125:        return (ctx->putBuf) (ctx, buf, size);
                    126:        IO_DBG (php_gd_error("put."));
                    127: }
                    128: 
                    129: int gdGetBuf (void *buf, int size, gdIOCtx * ctx)
                    130: {
                    131:        return (ctx->getBuf) (ctx, buf, size);
                    132: }
                    133: 
                    134: int gdSeek (gdIOCtx * ctx, const int pos)
                    135: {
                    136:        IO_DBG (php_gd_error("Seeking..."));
                    137:        return ((ctx->seek) (ctx, pos));
                    138:        IO_DBG (php_gd_error("Done."));
                    139: }
                    140: 
                    141: long gdTell (gdIOCtx * ctx)
                    142: {
                    143:        IO_DBG (php_gd_error("Telling..."));
                    144:        return ((ctx->tell) (ctx));
                    145:        IO_DBG (php_gd_error ("told."));
                    146: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>