Mercurial > hg
view mercurial/thirdparty/xdiff/xtypes.h @ 48296:4ee6b8b40787
rust: update the minimum version of Rust
Debian Bullseye has just been released, and it carries `rustc 1.48.0`.
This actually implies a regression that we can't really do anything about in
`rhg`. See https://github.com/rust-lang/rust/issues/88825. In short, closed (or
bad) standard file descriptors are reopened silently with no way of telling by
the Rust runtime before `main` is executed. This means that closed fds are not
forwarded to the subprocess we run in case of fallback. This is a bit sad, but
probably not something worth worrying too much about.
Differential Revision: https://phab.mercurial-scm.org/D11341
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Wed, 25 Aug 2021 17:53:19 +0200 |
parents | 882657a9f768 |
children |
line wrap: on
line source
/* * LibXDiff by Davide Libenzi ( File Differential Library ) * Copyright (C) 2003 Davide Libenzi * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, see * <http://www.gnu.org/licenses/>. * * Davide Libenzi <davidel@xmailserver.org> * */ #if !defined(XTYPES_H) #define XTYPES_H typedef struct s_chanode { struct s_chanode *next; int64_t icurr; } chanode_t; typedef struct s_chastore { chanode_t *head, *tail; int64_t isize, nsize; chanode_t *ancur; chanode_t *sncur; int64_t scurr; } chastore_t; typedef struct s_xrecord { struct s_xrecord *next; char const *ptr; int64_t size; uint64_t ha; } xrecord_t; typedef struct s_xdfile { /* manual memory management */ chastore_t rcha; /* number of records (lines) */ int64_t nrec; /* hash table size * the maximum hash value in the table is (1 << hbits) */ unsigned int hbits; /* hash table, hash value => xrecord_t * note: xrecord_t is a linked list. */ xrecord_t **rhash; /* range excluding common prefix and suffix * [recs[i] for i in range(0, dstart)] are common prefix. * [recs[i] for i in range(dstart, dend + 1 - dstart)] are interesting * lines */ int64_t dstart, dend; /* pointer to records (lines) */ xrecord_t **recs; /* record changed, use original "recs" index * rchag[i] can be either 0 or 1. 1 means recs[i] (line i) is marked * "changed". */ char *rchg; /* cleaned-up record index => original "recs" index * clean-up means: * rule 1. remove common prefix and suffix * rule 2. remove records that are only on one side, since they can * not match the other side * rindex[0] is likely dstart, if not removed up by rule 2. * rindex[nreff - 1] is likely dend, if not removed by rule 2. */ int64_t *rindex; /* rindex size */ int64_t nreff; /* cleaned-up record index => hash value * ha[i] = recs[rindex[i]]->ha */ uint64_t *ha; } xdfile_t; typedef struct s_xdfenv { xdfile_t xdf1, xdf2; /* number of lines for common prefix and suffix that are removed * from xdf1 and xdf2 as a preprocessing step */ int64_t nprefix, nsuffix; } xdfenv_t; #endif /* #if !defined(XTYPES_H) */