diff options
| author | Peter Wemm <peter@FreeBSD.org> | 2015-10-12 08:54:49 +0000 | 
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 2015-10-12 08:54:49 +0000 | 
| commit | dc5d469d6574e9fb03bdd793658bb371315b306a (patch) | |
| tree | 013c2e6845398e5a9ca4901dcc077769c7520e1d /subversion/libsvn_fs_fs/key-gen.c | |
| parent | 58218291fa73a17020ef0447398e9e8a78f9e8c7 (diff) | |
Diffstat (limited to 'subversion/libsvn_fs_fs/key-gen.c')
| -rw-r--r-- | subversion/libsvn_fs_fs/key-gen.c | 159 | 
1 files changed, 0 insertions, 159 deletions
| diff --git a/subversion/libsvn_fs_fs/key-gen.c b/subversion/libsvn_fs_fs/key-gen.c deleted file mode 100644 index a65c59d81689..000000000000 --- a/subversion/libsvn_fs_fs/key-gen.c +++ /dev/null @@ -1,159 +0,0 @@ -/* key-gen.c --- manufacturing sequential keys for some db tables - * - * ==================================================================== - *    Licensed to the Apache Software Foundation (ASF) under one - *    or more contributor license agreements.  See the NOTICE file - *    distributed with this work for additional information - *    regarding copyright ownership.  The ASF licenses this file - *    to you under the Apache License, Version 2.0 (the - *    "License"); you may not use this file except in compliance - *    with the License.  You may obtain a copy of the License at - * - *      http://www.apache.org/licenses/LICENSE-2.0 - * - *    Unless required by applicable law or agreed to in writing, - *    software distributed under the License is distributed on an - *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - *    KIND, either express or implied.  See the License for the - *    specific language governing permissions and limitations - *    under the License. - * ==================================================================== - */ - -#include <assert.h> -#include <string.h> -#include <stdlib.h> -#include <apr.h> -#include <apr_network_io.h> -#include "private/svn_fs_private.h" -#include "key-gen.h" - -/* The Berkeley DB backend uses a key as a transaction name and the -   maximum key size must be less than the maximum transaction name -   length. */ -#if MAX_KEY_SIZE > SVN_FS__TXN_MAX_LEN -#error The MAX_KEY_SIZE used for BDB txn names is greater than SVN_FS__TXN_MAX_LEN. -#endif - - -/*** Keys for reps and strings. ***/ - -void -svn_fs_fs__add_keys(const char *key1, const char *key2, char *result) -{ -  apr_ssize_t i1 = strlen(key1) - 1; -  apr_ssize_t i2 = strlen(key2) - 1; -  int i3 = 0; -  int val; -  int carry = 0; -  char buf[MAX_KEY_SIZE + 2]; - -  while ((i1 >= 0) || (i2 >= 0) || (carry > 0)) -    { -      val = carry; -      if (i1>=0) -        val += (key1[i1] <= '9') ? (key1[i1] - '0') : (key1[i1] - 'a' + 10); - -      if (i2>=0) -        val += (key2[i2] <= '9') ? (key2[i2] - '0') : (key2[i2] - 'a' + 10); - -      carry = val / 36; -      val = val % 36; - -      buf[i3++] = (char)((val <= 9) ? (val + '0') : (val - 10 + 'a')); - -      if (i1>=0) -        i1--; -      if (i2>=0) -        i2--; -    } - -  /* Now reverse the resulting string and NULL terminate it. */ -  for (i1 = 0; i1 < i3; i1++) -    result[i1] = buf[i3 - i1 - 1]; - -  result[i1] = '\0'; -} - - -void -svn_fs_fs__next_key(const char *this, apr_size_t *len, char *next) -{ -  apr_ssize_t i; -  apr_size_t olen = *len;     /* remember the first length */ -  char c;                     /* current char */ -  svn_boolean_t carry = TRUE; /* boolean: do we have a carry or not? -                                 We start with a carry, because we're -                                 incrementing the number, after all. */ - -  /* Leading zeros are not allowed, except for the string "0". */ -  if ((*len > 1) && (this[0] == '0')) -    { -      *len = 0; -      return; -    } - -  for (i = (olen - 1); i >= 0; i--) -    { -      c = this[i]; - -      /* Validate as we go. */ -      if (! (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'z')))) -        { -          *len = 0; -          return; -        } - -      if (carry) -        { -          if (c == 'z') -            next[i] = '0'; -          else -            { -              carry = FALSE; - -              if (c == '9') -                next[i] = 'a'; -              else -                next[i] = ++c; -            } -        } -      else -        next[i] = c; -    } - -  /* The new length is OLEN, plus 1 if there's a carry out of the -     leftmost digit. */ -  *len = olen + (carry ? 1 : 0); - -  /* Ensure that we haven't overrun the (ludicrous) bound on key length. -     Note that MAX_KEY_SIZE is a bound on the size *including* -     the trailing null byte. */ -  assert(*len < MAX_KEY_SIZE); - -  /* Now we know it's safe to add the null terminator. */ -  next[*len] = '\0'; - -  /* Handle any leftover carry. */ -  if (carry) -    { -      memmove(next+1, next, olen); -      next[0] = '1'; -    } -} - - -int -svn_fs_fs__key_compare(const char *a, const char *b) -{ -  apr_size_t a_len = strlen(a); -  apr_size_t b_len = strlen(b); -  int cmp; - -  if (a_len > b_len) -    return 1; -  if (b_len > a_len) -    return -1; -  cmp = strcmp(a, b); -  return (cmp ? (cmp / abs(cmp)) : 0); -} | 
