[BACK]Return to sort.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / sort

Diff for /src/usr.bin/sort/sort.h between version 1.8 and 1.9

version 1.8, 2015/01/16 06:40:12 version 1.9, 2015/03/17 17:45:13
Line 1 
Line 1 
 /*      $OpenBSD$       */  /*      $OpenBSD$       */
   
 /*-  /*-
  * Copyright (c) 1993   * Copyright (C) 2009 Gabor Kovesdan <gabor@FreeBSD.org>
  *      The Regents of the University of California.  All rights reserved.   * Copyright (C) 2012 Oleg Moskalenko <mom040267@gmail.com>
    * All rights reserved.
  *   *
  * This code is derived from software contributed to Berkeley by  
  * Peter McIlroy.  
  *  
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions   * modification, are permitted provided that the following conditions
  * are met:   * are met:
Line 15 
Line 13 
  * 2. Redistributions in binary form must reproduce the above copyright   * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the   *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.   *    documentation and/or other materials provided with the distribution.
  * 3. Neither the name of the University nor the names of its contributors  
  *    may be used to endorse or promote products derived from this software  
  *    without specific prior written permission.  
  *   *
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
Line 30 
Line 25 
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.   * SUCH DAMAGE.
  *  
  *      @(#)sort.h      8.1 (Berkeley) 6/6/93  
  */   */
   
 #include <db.h>  #if !defined(__BSD_SORT_H__)
 #include <err.h>  #define __BSD_SORT_H__
   
 #include <errno.h>  #include <errno.h>
 #include <fcntl.h>  #include <stdbool.h>
 #include <limits.h>  
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <sysexits.h>
 #include <string.h>  #include <wchar.h>
   
 #define NBINS 256  #include <sys/types.h>
 #define MAXMERGE 16  #include <md5.h>
   
 /* values for masks, weights, and other flags. */  #define VERSION "2.3-OpenBSD"
 #define I 1             /* mask out non-printable characters */  
 #define D 2             /* sort alphanumeric characters only */  
 #define N 4             /* Field is a number */  
 #define F 8             /* weight lower and upper case the same */  
 #define R 16            /* Field is reversed with respect to the global weight */  
 #define BI 32           /* ignore blanks in icol */  
 #define BT 64           /* ignore blanks in tcol */  
   
 /* masks for delimiters: blanks, fields, and termination. */  /*
 #define BLANK 1         /* ' ', '\t'; '\n' if -T is invoked */   * If true, we output some debug information.
 #define FLD_D 2         /* ' ', '\t' default; from -t otherwise */   */
 #define REC_D_F 4       /* '\n' default; from -T otherwise */  extern bool debug_sort;
   
 #define min(a, b) ((a) < (b) ? (a) : (b))  /*
 #define max(a, b) ((a) > (b) ? (a) : (b))   * MD5 context for random hash function
    */
   extern MD5_CTX md5_ctx;
   
 #define FCLOSE(file) {                                                  \  /*
         if (EOF == fclose(file))                                        \   * sort.c
                 err(2, "fclose");                                       \  
 }  
   
 #define EWRITE(ptr, size, n, f) {                                       \  
         if (!fwrite(ptr, size, n, f))                                   \  
                  err(2, "fwrite");                                      \  
 }  
   
 /* length of record is currently limited to maximum string length (size_t) */  
 typedef size_t length_t;  
   
 #define SALIGN(n) ((n+(sizeof(length_t)-1)) & ~(sizeof(length_t)-1))  
   
 /* a record is a key/line pair starting at rec.data. It has a total length  
  * and an offset to the start of the line half of the pair.  
  */   */
 typedef struct recheader {  
         length_t length;  
         length_t offset;  
         u_char data[1];  
 } RECHEADER;  
   
 typedef struct trecheader {  /*
         length_t length;   * This structure holds main sort options which are NOT affecting the sort ordering.
         length_t offset;  
 } TRECHEADER;  
   
 /* This is the column as seen by struct field.  It is used by enterfield.  
  * They are matched with corresponding coldescs during initialization.  
  */   */
 struct column {  struct sort_opts {
         struct coldesc *p;          wint_t          field_sep;
         int num;          int             sort_method;
         int indent;          bool            cflag;
           bool            csilentflag;
           bool            kflag;
           bool            mflag;
           bool            sflag;
           bool            uflag;
           bool            zflag;
           bool            tflag;
           bool            complex_sort;
 };  };
   
 /* a coldesc has a number and pointers to the beginning and end of the  /*
  * corresponding column in the current line.  This is determined in enterkey.   * Key value structure forward declaration
  */   */
 typedef struct coldesc {  struct key_value;
         u_char *start;  
         u_char *end;  
         int num;  
 } COLDESC;  
   
 /* A field has an initial and final column; an omitted final column  /*
  * implies the end of the line.  Flags regulate omission of blanks and   * Cmp function
  * numerical sorts; mask determines which characters are ignored (from -i, -d);  
  * weights determines the sort weights of a character (from -f, -r).  
  */   */
 struct field {  typedef int (*cmpcoll_t)(struct key_value *kv1, struct key_value *kv2, size_t offset);
         struct column icol;  
         struct column tcol;  
         u_int flags;  
         u_char *mask;  
         u_char *weights;  
 };  
   
 union f_handle {  /*
         int top;   * This structure holds "sort modifiers" - options which are affecting the sort ordering.
         char **names;   */
   struct sort_mods {
           cmpcoll_t       func;
           bool            bflag;
           bool            dflag;
           bool            fflag;
           bool            gflag;
           bool            iflag;
           bool            Mflag;
           bool            nflag;
           bool            rflag;
           bool            Rflag;
           bool            Vflag;
           bool            hflag;
 };  };
 extern int PANIC;       /* maximum depth of fsort before fmerge is called */  
 extern u_char ascii[NBINS], Rascii[NBINS], Ftable[NBINS], RFtable[NBINS];  
 extern u_char alltable[NBINS], dtable[NBINS], itable[NBINS];  
 extern u_char d_mask[NBINS];  
 extern int SINGL_FLD, SEP_FLAG, UNIQUE, STABLE;  
 extern int REC_D;  
 extern char *tmpdir;  
 extern int ND;          /* limit on number of -k options. */  
   
 #include "extern.h"  extern bool need_hint;
   
   extern struct sort_opts sort_opts_vals;
   
   extern struct sort_mods * const default_sort_mods;
   
   #endif /* __BSD_SORT_H__ */

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9