You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2014/12/16 11:33:25 UTC

svn commit: r1645898 - in /subversion/branches/fsx-id/subversion/libsvn_fs_x: cached_data.c dag.c id.c id.h tree.c util.c

Author: stefan2
Date: Tue Dec 16 10:33:24 2014
New Revision: 1645898

URL: http://svn.apache.org/r1645898
Log:
On the fsx-id branch:
Prepare for splitting the ID within the noderev on-disk representation.
Provide a parser / unparser function pair for ID parts.  The unparser
already exists but needs to be renamed for symmetry.

* subversion/libsvn_fs_x/id.h
  (svn_fs_x__id_part_parse): Declare new function.
  (svn_fs_x__noderev_id_unparse): Rename to ...
  (svn_fs_x__id_part_unparse): ... this.

* subversion/libsvn_fs_x/id.c
  (svn_fs_x__id_part_parse): Implement.
  (svn_fs_x__noderev_id_unparse): Rename to ...
  (svn_fs_x__id_part_unparse): ... this.

* subversion/libsvn_fs_x/cached_data.c
  (err_dangling_id,
   svn_fs_x__get_node_revision,
   read_dir_entries): Update caller.

* subversion/libsvn_fs_x/dag.c
  (svn_fs_x__dag_set_proplist,
   svn_fs_x__dag_increment_mergeinfo_count,
   svn_fs_x__dag_set_has_mergeinfo): Same.

* subversion/libsvn_fs_x/tree.c
  (merge,
   stringify_node): Same.

* subversion/libsvn_fs_x/util.c
  (svn_fs_x__path_txn_node_rev): Same.

Modified:
    subversion/branches/fsx-id/subversion/libsvn_fs_x/cached_data.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/id.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/id.h
    subversion/branches/fsx-id/subversion/libsvn_fs_x/tree.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/util.c

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/cached_data.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/cached_data.c?rev=1645898&r1=1645897&r2=1645898&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/cached_data.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/cached_data.c Tue Dec 16 10:33:24 2014
@@ -256,7 +256,7 @@ static svn_error_t *
 err_dangling_id(svn_fs_t *fs,
                 const svn_fs_x__noderev_id_t *id)
 {
-  svn_string_t *id_str = svn_fs_x__noderev_id_unparse(id, fs->pool);
+  svn_string_t *id_str = svn_fs_x__id_part_unparse(id, fs->pool);
   return svn_error_createf
     (SVN_ERR_FS_ID_NOT_FOUND, 0,
      _("Reference to non-existent node '%s' in filesystem '%s'"),
@@ -380,8 +380,7 @@ svn_fs_x__get_node_revision(node_revisio
                                             result_pool, scratch_pool);
   if (err && err->apr_err == SVN_ERR_FS_CORRUPT)
     {
-      svn_string_t *id_string = svn_fs_x__noderev_id_unparse(id,
-                                                             scratch_pool);
+      svn_string_t *id_string = svn_fs_x__id_part_unparse(id, scratch_pool);
       return svn_error_createf(SVN_ERR_FS_CORRUPT, err,
                                "Corrupt node-revision '%s'",
                                id_string->data);
@@ -2483,7 +2482,7 @@ read_dir_entries(apr_array_header_t *ent
       if (str == NULL)
         return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
                       _("Directory entry corrupt in '%s'"),
-                      svn_fs_x__noderev_id_unparse(id, scratch_pool)->data);
+                      svn_fs_x__id_part_unparse(id, scratch_pool)->data);
 
       if (strcmp(str, SVN_FS_X__KIND_FILE) == 0)
         {
@@ -2497,14 +2496,14 @@ read_dir_entries(apr_array_header_t *ent
         {
           return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
                       _("Directory entry corrupt in '%s'"),
-                      svn_fs_x__noderev_id_unparse(id, scratch_pool)->data);
+                      svn_fs_x__id_part_unparse(id, scratch_pool)->data);
         }
 
       str = svn_cstring_tokenize(" ", &entry.val);
       if (str == NULL)
         return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
                       _("Directory entry corrupt in '%s'"),
-                      svn_fs_x__noderev_id_unparse(id, scratch_pool)->data);
+                      svn_fs_x__id_part_unparse(id, scratch_pool)->data);
 
       SVN_ERR(svn_fs_x__id_parse(&dirent->id, str, result_pool));
 

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c?rev=1645898&r1=1645897&r2=1645898&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c Tue Dec 16 10:33:24 2014
@@ -562,7 +562,7 @@ svn_fs_x__dag_set_proplist(dag_node_t *n
   /* Sanity check: this node better be mutable! */
   if (! svn_fs_x__dag_check_mutable(node))
     {
-      svn_string_t *idstr = svn_fs_x__noderev_id_unparse(&node->id, pool);
+      svn_string_t *idstr = svn_fs_x__id_part_unparse(&node->id, pool);
       return svn_error_createf
         (SVN_ERR_FS_NOT_MUTABLE, NULL,
          "Can't set proplist on *immutable* node-revision %s",
@@ -587,7 +587,7 @@ svn_fs_x__dag_increment_mergeinfo_count(
   /* Sanity check: this node better be mutable! */
   if (! svn_fs_x__dag_check_mutable(node))
     {
-      svn_string_t *idstr = svn_fs_x__noderev_id_unparse(&node->id, pool);
+      svn_string_t *idstr = svn_fs_x__id_part_unparse(&node->id, pool);
       return svn_error_createf
         (SVN_ERR_FS_NOT_MUTABLE, NULL,
          "Can't increment mergeinfo count on *immutable* node-revision %s",
@@ -603,7 +603,7 @@ svn_fs_x__dag_increment_mergeinfo_count(
   noderev->mergeinfo_count += increment;
   if (noderev->mergeinfo_count < 0)
     {
-      svn_string_t *idstr = svn_fs_x__noderev_id_unparse(&node->id, pool);
+      svn_string_t *idstr = svn_fs_x__id_part_unparse(&node->id, pool);
       return svn_error_createf
         (SVN_ERR_FS_CORRUPT, NULL,
          apr_psprintf(pool,
@@ -614,7 +614,7 @@ svn_fs_x__dag_increment_mergeinfo_count(
     }
   if (noderev->mergeinfo_count > 1 && noderev->kind == svn_node_file)
     {
-      svn_string_t *idstr = svn_fs_x__noderev_id_unparse(&node->id, pool);
+      svn_string_t *idstr = svn_fs_x__id_part_unparse(&node->id, pool);
       return svn_error_createf
         (SVN_ERR_FS_CORRUPT, NULL,
          apr_psprintf(pool,
@@ -639,7 +639,7 @@ svn_fs_x__dag_set_has_mergeinfo(dag_node
   /* Sanity check: this node better be mutable! */
   if (! svn_fs_x__dag_check_mutable(node))
     {
-      svn_string_t *idstr = svn_fs_x__noderev_id_unparse(&node->id, pool);
+      svn_string_t *idstr = svn_fs_x__id_part_unparse(&node->id, pool);
       return svn_error_createf
         (SVN_ERR_FS_NOT_MUTABLE, NULL,
          "Can't set mergeinfo flag on *immutable* node-revision %s",

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/id.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/id.c?rev=1645898&r1=1645897&r2=1645898&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/id.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/id.c Tue Dec 16 10:33:24 2014
@@ -153,9 +153,20 @@ svn_fs_x__id_part_eq(const svn_fs_x__id_
   return lhs->change_set == rhs->change_set && lhs->number == rhs->number;
 }
 
+svn_error_t *
+svn_fs_x__id_part_parse(svn_fs_x__id_part_t *part,
+                        const char *data)
+{
+  if (!part_parse(part, data))
+    return svn_error_createf(SVN_ERR_FS_MALFORMED_NODEREV_ID, NULL,
+                             "Malformed ID string");
+
+  return SVN_NO_ERROR;
+}
+
 svn_string_t *
-svn_fs_x__noderev_id_unparse(const svn_fs_x__noderev_id_t *id,
-                             apr_pool_t *pool)
+svn_fs_x__id_part_unparse(const svn_fs_x__id_part_t *id,
+                          apr_pool_t *pool)
 {
   char string[2 * SVN_INT64_BUFFER_SIZE + 1];
   char *p = part_unparse(string, id);

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/id.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/id.h?rev=1645898&r1=1645897&r2=1645898&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/id.h (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/id.h Tue Dec 16 10:33:24 2014
@@ -90,10 +90,16 @@ svn_boolean_t svn_fs_x__id_part_is_root(
 svn_boolean_t svn_fs_x__id_part_eq(const svn_fs_x__id_part_t *lhs,
                                    const svn_fs_x__id_part_t *rhs);
 
+/* Parse the NUL-terminated ID part at DATA and write the result into *PART.
+ */
+svn_error_t *
+svn_fs_x__id_part_parse(svn_fs_x__id_part_t *part,
+                        const char *data);
+
 /* Convert ID into string form, allocated in POOL. */
 svn_string_t *
-svn_fs_x__noderev_id_unparse(const svn_fs_x__noderev_id_t *id,
-                             apr_pool_t *pool);
+svn_fs_x__id_part_unparse(const svn_fs_x__id_part_t*id,
+                          apr_pool_t *pool);
 
 /* Set *PART to "unused". */
 void svn_fs_x__id_part_reset(svn_fs_x__id_part_t *part);

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/tree.c?rev=1645898&r1=1645897&r2=1645898&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/tree.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/tree.c Tue Dec 16 10:33:24 2014
@@ -1850,7 +1850,7 @@ merge(svn_stringbuf_t *conflict_p,
   /* It's improper to call this function with ancestor == target. */
   if (svn_fs_x__id_part_eq(ancestor_id, target_id))
     {
-      svn_string_t *id_str = svn_fs_x__noderev_id_unparse(target_id, pool);
+      svn_string_t *id_str = svn_fs_x__id_part_unparse(target_id, pool);
       return svn_error_createf
         (SVN_ERR_FS_GENERAL, NULL,
          _("Bad merge; target '%s' has id '%s', same as ancestor"),
@@ -4220,8 +4220,7 @@ stringify_node(dag_node_t *node,
                apr_pool_t *pool)
 {
   /* ### TODO: print some PATH@REV to it, too. */
-  return svn_fs_x__noderev_id_unparse(svn_fs_x__dag_get_id(node),
-                                      pool)->data;
+  return svn_fs_x__id_part_unparse(svn_fs_x__dag_get_id(node), pool)->data;
 }
 
 /* Check metadata sanity on NODE, and on its children.  Manually verify

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/util.c?rev=1645898&r1=1645897&r2=1645898&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/util.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/util.c Tue Dec 16 10:33:24 2014
@@ -391,7 +391,7 @@ svn_fs_x__path_txn_node_rev(svn_fs_t *fs
                             const svn_fs_x__noderev_id_t *id,
                             apr_pool_t *pool)
 {
-  const char *filename = svn_fs_x__noderev_id_unparse(id, pool)->data;
+  const char *filename = svn_fs_x__id_part_unparse(id, pool)->data;
   apr_int64_t txn_id = svn_fs_x__get_txn_id(id->change_set);
 
   return svn_dirent_join(svn_fs_x__path_txn_dir(fs, txn_id, pool),