Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

xsum.c File Reference

#include "stdlib.h"
#include "stdio.h"
#include "sys/types.h"
#include "fcntl.h"
#include "unistd.h"

Go to the source code of this file.


Defines

#define _POSIX_SOURCE
#define O_RDONLY   0
#define O_BINARY   O_RDONLY

Typedefs

typedef unsigned char Uchar

Functions

void usage (int rc)
long sum32 (register long sum, register Uchar *x, int n)
int cr_purge (Uchar *buf, int n)
void process (char *s, int x)
 main (int argc, char **argv)

Variables

char * progname
int ignore_cr
Uchar Buf [16 *1024]

Define Documentation

#define _POSIX_SOURCE
 

Definition at line 23 of file xsum.c.

#define O_BINARY   O_RDONLY
 

Definition at line 38 of file xsum.c.

Referenced by DCM_OpenFile(), DCM_WriteFile(), main(), ncio_create(), ncio_open(), read_stdin(), and write_stdout().

#define O_RDONLY   0
 

Definition at line 35 of file xsum.c.

Referenced by main().


Typedef Documentation

typedef unsigned char Uchar
 

Definition at line 56 of file xsum.c.

Referenced by cr_purge(), and sum32().


Function Documentation

int cr_purge Uchar   buf,
int    n
 

Definition at line 148 of file xsum.c.

References Uchar.

Referenced by process().

00150 {
00151         register Uchar *b, *b1, *be;
00152         b = buf;
00153         be = b + n;
00154         while(b < be)
00155                 if (*b++ == '\r') {
00156                         b1 = b - 1;
00157                         while(b < be)
00158                                 if ((*b1 = *b++) != '\r')
00159                                         b1++;
00160                         return b1 - buf;
00161                         }
00162         return n;
00163         }

main int    argc,
char **    argv
 

Definition at line 198 of file xsum.c.

References argc, ignore_cr, O_BINARY, O_RDONLY, process(), progname, and usage().

00200 {
00201         int x;
00202         char *s;
00203         static int rc;
00204 
00205         progname = *argv;
00206         argc = argc;            /* turn off "not used" warning */
00207         s = *++argv;
00208         if (s && *s == '-') {
00209                 switch(s[1]) {
00210                         case '?':
00211                                 usage(0);
00212                         case 'r':
00213                                 ignore_cr = 1;
00214                         case '-':
00215                                 break;
00216                         default:
00217                                 fprintf(stderr, "invalid option %s\n", s);
00218                                 usage(1);
00219                         }
00220                 s = *++argv;
00221                 }
00222         if (s) do {
00223                 x = open(s, O_RDONLY|O_BINARY);
00224                 if (x < 0) {
00225                         fprintf(stderr, "%s: can't open %s\n", progname, s);
00226                         rc |= 1;
00227                         }
00228                 else
00229                         process(s, x);
00230                 }
00231                 while(s = *++argv);
00232         else {
00233                 process("/dev/stdin", fileno(stdin));
00234                 }
00235         return rc;
00236         }

void process char *    s,
int    x
 

Definition at line 173 of file xsum.c.

References Buf, close(), cr_purge(), read(), and sum32().

00175 {
00176         register int n;
00177         long fsize, sum;
00178 
00179         sum = 0;
00180         fsize = 0;
00181         while((n = read(x, (char *)Buf, sizeof(Buf))) > 0) {
00182                 if (ignore_cr)
00183                         n = cr_purge(Buf, n);
00184                 fsize += n;
00185                 sum = sum32(sum, Buf, n);
00186                 }
00187         sum &= 0xffffffff;
00188         if (n==0)
00189                 printf("%s\t%lx\t%ld\n", s, sum & 0xffffffff, fsize);
00190         else { perror(s); }
00191         close(x);
00192         }

long sum32 register long    sum,
register Uchar   x,
int    n
 

Definition at line 65 of file xsum.c.

References Uchar.

Referenced by process().

00067 {
00068         register Uchar *xe;
00069         static long crc_table[256] = {
00070                 0,              151466134,      302932268,      453595578,
00071                 -9583591,       -160762737,     -312236747,     -463170141,
00072                 -19167182,      -136529756,     -321525474,     -439166584,
00073                 28724267,       145849533,      330837255,      448732561,
00074                 -38334364,      -189783822,     -273059512,     -423738914,
00075                 47895677,       199091435,      282375505,      433292743,
00076                 57448534,       174827712,      291699066,      409324012,
00077                 -67019697,      -184128295,     -300991133,     -418902539,
00078                 -76668728,      -227995554,     -379567644,     -530091662,
00079                 67364049,       218420295,      369985021,      520795499,
00080                 95791354,       213031020,      398182870,      515701056,
00081                 -86479645,      -203465611,     -388624945,     -506380967,
00082                 114897068,      266207290,      349655424,      500195606,
00083                 -105581387,     -256654301,     -340093543,     -490887921,
00084                 -134039394,     -251295736,     -368256590,     -485758684,
00085                 124746887,      241716241,      358686123,      476458301,
00086                 -153337456,     -2395898,       -455991108,     -304803798,
00087                 162629001,      11973919,       465560741,      314102835,
00088                 134728098,      16841012,       436840590,      319723544,
00089                 -144044613,     -26395347,      -446403433,     -329032703,
00090                 191582708,      40657250,       426062040,      274858062,
00091                 -200894995,     -50223749,      -435620671,     -284179369,
00092                 -172959290,     -55056048,      -406931222,     -289830788,
00093                 182263263,      64630089,       416513267,      299125861,
00094                 229794136,      78991822,       532414580,      381366498,
00095                 -220224191,     -69691945,      -523123603,     -371788549,
00096                 -211162774,     -93398532,      -513308602,     -396314416,
00097                 201600371,      84090341,       503991391,      386759881,
00098                 -268078788,     -117292630,     -502591472,     -351526778,
00099                 258520357,      107972019,      493278217,      341959839,
00100                 249493774,      131713432,      483432482,      366454964,
00101                 -239911657,     -122417791,     -474129349,     -356881235,
00102                 -306674912,     -457198666,     -4791796,       -156118374,
00103                 315967289,      466778031,      14362133,       165418627,
00104                 325258002,      442776452,      23947838,       141187752,
00105                 -334573813,     -452329571,     -33509849,      -150495567,
00106                 269456196,      419996626,      33682024,       184992510,
00107                 -278767779,     -429561909,     -43239823,      -194312473,
00108                 -288089226,     -405591072,     -52790694,      -170046772,
00109                 297394031,      415166457,      62373443,       179343061,
00110                 383165416,      533828478,      81314500,       232780370,
00111                 -373594127,     -524527769,     -72022307,      -223201717,
00112                 -401789990,     -519431348,     -100447498,     -217810336,
00113                 392228803,      510123861,      91131631,       208256633,
00114                 -345918580,     -496598246,     -110112096,     -261561802,
00115                 336361365,      487278339,      100800185,      251995695,
00116                 364526526,      482151208,      129260178,      246639108,
00117                 -354943065,     -472854735,     -119955829,     -237064675,
00118                 459588272,      308539942,      157983644,      7181066,
00119                 -469170519,     -317835713,     -167286907,     -16754925,
00120                 -440448382,     -323454444,     -139383890,     -21619912,
00121                 450006683,      332774925,      148697015,      31186721,
00122                 -422325548,     -271261118,     -186797064,     -36011154,
00123                 431888077,      280569435,      196114401,      45565815,
00124                 403200742,      286222960,      168180682,      50400092,
00125                 -412770561,     -295522711,     -177471533,     -59977915,
00126                 -536157576,     -384970002,     -234585260,     -83643454,
00127                 526853729,      375396087,      225003341,      74348507,
00128                 517040714,      399923932,      215944038,      98057200,
00129                 -507728301,     -390357307,     -206385281,     -88735767,
00130                 498987548,      347783818,      263426864,      112501670,
00131                 -489671163,     -338229613,     -253864151,     -103192641,
00132                 -479823314,     -362722632,     -244835582,     -126932076,
00133                 470531639,      353144481,      235265819,      117632909
00134                 };
00135 
00136         xe = x + n;
00137         while(x < xe)
00138                 sum = crc_table[(sum ^ *x++) & 0xff] ^ (sum >> 8 & 0xffffff);
00139         return sum;
00140         }

void usage int    rc
 

Definition at line 48 of file xsum.c.

References progname.

00050 {
00051         fprintf(stderr, "usage: %s [-r] [file [file...]]\n\
00052         option -r ignores carriage return characters\n", progname);
00053         exit(rc);
00054         }

Variable Documentation

Uchar Buf[16*1024] [static]
 

Definition at line 165 of file xsum.c.

Referenced by process().

int ignore_cr [static]
 

Definition at line 42 of file xsum.c.

Referenced by main().

char* progname
 

Definition at line 41 of file xsum.c.

Referenced by main(), and usage().

 

Powered by Plone

This site conforms to the following standards: