1*81fe1d2fSmillert /* $OpenBSD: sort.h,v 1.10 2015/12/31 16:09:31 millert Exp $ */ 2671ba900Smillert 3671ba900Smillert /*- 479428148Smillert * Copyright (C) 2009 Gabor Kovesdan <gabor@FreeBSD.org> 579428148Smillert * Copyright (C) 2012 Oleg Moskalenko <mom040267@gmail.com> 679428148Smillert * All rights reserved. 7671ba900Smillert * 8671ba900Smillert * Redistribution and use in source and binary forms, with or without 9671ba900Smillert * modification, are permitted provided that the following conditions 10671ba900Smillert * are met: 11671ba900Smillert * 1. Redistributions of source code must retain the above copyright 12671ba900Smillert * notice, this list of conditions and the following disclaimer. 13671ba900Smillert * 2. Redistributions in binary form must reproduce the above copyright 14671ba900Smillert * notice, this list of conditions and the following disclaimer in the 15671ba900Smillert * documentation and/or other materials provided with the distribution. 16671ba900Smillert * 1779428148Smillert * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18671ba900Smillert * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19671ba900Smillert * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2079428148Smillert * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21671ba900Smillert * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22671ba900Smillert * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23671ba900Smillert * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24671ba900Smillert * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25671ba900Smillert * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26671ba900Smillert * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27671ba900Smillert * SUCH DAMAGE. 28671ba900Smillert */ 29671ba900Smillert 3079428148Smillert #if !defined(__BSD_SORT_H__) 3179428148Smillert #define __BSD_SORT_H__ 3279428148Smillert 33671ba900Smillert #include <errno.h> 3479428148Smillert #include <stdbool.h> 35671ba900Smillert #include <stdio.h> 3679428148Smillert #include <wchar.h> 37671ba900Smillert 3879428148Smillert #include <sys/types.h> 3979428148Smillert #include <md5.h> 40671ba900Smillert 4179428148Smillert #define VERSION "2.3-OpenBSD" 42671ba900Smillert 4379428148Smillert /* 4479428148Smillert * If true, we output some debug information. 45671ba900Smillert */ 4679428148Smillert extern bool debug_sort; 47671ba900Smillert 4879428148Smillert /* 4979428148Smillert * MD5 context for random hash function 50671ba900Smillert */ 5179428148Smillert extern MD5_CTX md5_ctx; 5279428148Smillert 5379428148Smillert /* 5479428148Smillert * sort.c 5579428148Smillert */ 5679428148Smillert 5779428148Smillert /* 5879428148Smillert * This structure holds main sort options which are NOT affecting the sort ordering. 5979428148Smillert */ 6079428148Smillert struct sort_opts { 6179428148Smillert wint_t field_sep; 6279428148Smillert int sort_method; 6379428148Smillert bool cflag; 6479428148Smillert bool csilentflag; 6579428148Smillert bool kflag; 6679428148Smillert bool mflag; 6779428148Smillert bool sflag; 6879428148Smillert bool uflag; 6979428148Smillert bool zflag; 7079428148Smillert bool tflag; 7179428148Smillert bool complex_sort; 72671ba900Smillert }; 73671ba900Smillert 7479428148Smillert /* 7579428148Smillert * Key value structure forward declaration 76671ba900Smillert */ 7779428148Smillert struct key_value; 78671ba900Smillert 7979428148Smillert /* 8079428148Smillert * Cmp function 81671ba900Smillert */ 8279428148Smillert typedef int (*cmpcoll_t)(struct key_value *kv1, struct key_value *kv2, size_t offset); 8379428148Smillert 8479428148Smillert /* 8579428148Smillert * This structure holds "sort modifiers" - options which are affecting the sort ordering. 8679428148Smillert */ 8779428148Smillert struct sort_mods { 8879428148Smillert cmpcoll_t func; 8979428148Smillert bool bflag; 9079428148Smillert bool dflag; 9179428148Smillert bool fflag; 9279428148Smillert bool gflag; 9379428148Smillert bool iflag; 9479428148Smillert bool Mflag; 9579428148Smillert bool nflag; 9679428148Smillert bool rflag; 9779428148Smillert bool Rflag; 9879428148Smillert bool Vflag; 9979428148Smillert bool hflag; 100671ba900Smillert }; 101671ba900Smillert 10279428148Smillert extern bool need_hint; 103671ba900Smillert 10479428148Smillert extern struct sort_opts sort_opts_vals; 10579428148Smillert 10679428148Smillert extern struct sort_mods * const default_sort_mods; 10779428148Smillert 10879428148Smillert #endif /* __BSD_SORT_H__ */ 109