⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entries.c

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
  }  /* Is this entry copied? */  SVN_ERR(read_bool(&entry->copied, SVN_WC__ENTRY_ATTR_COPIED, buf, end));  MAYBE_DONE;  SVN_ERR(read_str(&entry->copyfrom_url, buf, end, pool));  MAYBE_DONE;  SVN_ERR(read_revnum(&entry->copyfrom_rev, buf, end, pool));  MAYBE_DONE;  /* Is this entry deleted? */  SVN_ERR(read_bool(&entry->deleted, SVN_WC__ENTRY_ATTR_DELETED, buf, end));  MAYBE_DONE;  /* Is this entry absent? */  SVN_ERR(read_bool(&entry->absent, SVN_WC__ENTRY_ATTR_ABSENT, buf, end));  MAYBE_DONE;  /* Is this entry incomplete? */  SVN_ERR(read_bool(&entry->incomplete, SVN_WC__ENTRY_ATTR_INCOMPLETE,                    buf, end));  MAYBE_DONE;  /* UUID. */  SVN_ERR(read_str(&entry->uuid, buf, end, pool));  MAYBE_DONE;  /* Lock token. */  SVN_ERR(read_str(&entry->lock_token, buf, end, pool));  MAYBE_DONE;  /* Lock owner. */  SVN_ERR(read_str(&entry->lock_owner, buf, end, pool));  MAYBE_DONE;  /* Lock comment. */  SVN_ERR(read_str(&entry->lock_comment, buf, end, pool));  MAYBE_DONE;  /* Lock creation date. */  SVN_ERR(read_time(&entry->lock_creation_date, buf, end, pool));   done:;  *new_entry = entry;  return SVN_NO_ERROR;}svn_error_t *svn_wc__atts_to_entry(svn_wc_entry_t **new_entry,                      apr_uint32_t *modify_flags,                      apr_hash_t *atts,                      apr_pool_t *pool){  svn_wc_entry_t *entry = alloc_entry(pool);  const char *name;    *modify_flags = 0;  /* Find the name and set up the entry under that name. */  name = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_NAME, APR_HASH_KEY_STRING);  /* XXX Replace the obsolete "svn:this_dir".     XXX This code should go away by 1.0 */  {    if (name && strcmp(name, "svn:this_dir") == 0)      name = SVN_WC_ENTRY_THIS_DIR;  }  entry->name = name ? apr_pstrdup(pool, name) : SVN_WC_ENTRY_THIS_DIR;  /* Attempt to set revision (resolve_to_defaults may do it later, too) */  {    const char *revision_str      = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_REVISION, APR_HASH_KEY_STRING);    if (revision_str)      {        entry->revision = SVN_STR_TO_REV(revision_str);        *modify_flags |= SVN_WC__ENTRY_MODIFY_REVISION;      }    else      entry->revision = SVN_INVALID_REVNUM;  }  /* Attempt to set up url path (again, see resolve_to_defaults). */  {    entry->url      = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_URL, APR_HASH_KEY_STRING);    if (entry->url)      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_URL;        entry->url = apr_pstrdup(pool, entry->url);      }  }  /* Set up repository root.  Make sure it is a prefix of url. */  {    entry->repos = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_REPOS,                                APR_HASH_KEY_STRING);    if (entry->repos)      {        if (entry->url && ! svn_path_is_ancestor(entry->repos, entry->url))          return svn_error_createf(SVN_ERR_WC_CORRUPT, NULL,                                   _("Entry for '%s' has invalid repository "                                     "root"),                                   name ? name : SVN_WC_ENTRY_THIS_DIR);        *modify_flags |= SVN_WC__ENTRY_MODIFY_REPOS;        entry->repos = apr_pstrdup(pool, entry->repos);      }  }  /* Set up kind. */  {    const char *kindstr      = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_KIND, APR_HASH_KEY_STRING);    entry->kind = svn_node_none;    if (kindstr)      {        if (! strcmp(kindstr, SVN_WC__ENTRIES_ATTR_FILE_STR))          entry->kind = svn_node_file;        else if (! strcmp(kindstr, SVN_WC__ENTRIES_ATTR_DIR_STR))          entry->kind = svn_node_dir;        else          return svn_error_createf             (SVN_ERR_NODE_UNKNOWN_KIND, NULL,             _("Entry '%s' has invalid node kind"),             (name ? name : SVN_WC_ENTRY_THIS_DIR));        *modify_flags |= SVN_WC__ENTRY_MODIFY_KIND;      }  }  /* Look for a schedule attribute on this entry. */  {    const char *schedulestr      = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_SCHEDULE, APR_HASH_KEY_STRING);        entry->schedule = svn_wc_schedule_normal;    if (schedulestr)      {        if (! strcmp(schedulestr, SVN_WC__ENTRY_VALUE_ADD))          entry->schedule = svn_wc_schedule_add;        else if (! strcmp(schedulestr, SVN_WC__ENTRY_VALUE_DELETE))              entry->schedule = svn_wc_schedule_delete;        else if (! strcmp(schedulestr, SVN_WC__ENTRY_VALUE_REPLACE))          entry->schedule = svn_wc_schedule_replace;        else if (! strcmp(schedulestr, ""))          entry->schedule = svn_wc_schedule_normal;        else          return svn_error_createf             (SVN_ERR_ENTRY_ATTRIBUTE_INVALID, NULL,             _("Entry '%s' has invalid '%s' value"),             (name ? name : SVN_WC_ENTRY_THIS_DIR),             SVN_WC__ENTRY_ATTR_SCHEDULE);        *modify_flags |= SVN_WC__ENTRY_MODIFY_SCHEDULE;      }  }       /* Is this entry in a state of mental torment (conflict)? */  {    if ((entry->prejfile         = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_PREJFILE,                        APR_HASH_KEY_STRING)))      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_PREJFILE;        /* Normalize "" (used by the log runner) to NULL */        entry->prejfile = *(entry->prejfile)          ? apr_pstrdup(pool, entry->prejfile) : NULL;      }    if ((entry->conflict_old         = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CONFLICT_OLD,                        APR_HASH_KEY_STRING)))      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_CONFLICT_OLD;        /* Normalize "" (used by the log runner) to NULL */        entry->conflict_old =          *(entry->conflict_old)          ? apr_pstrdup(pool, entry->conflict_old) : NULL;      }    if ((entry->conflict_new         = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CONFLICT_NEW,                        APR_HASH_KEY_STRING)))      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_CONFLICT_NEW;        /* Normalize "" (used by the log runner) to NULL */        entry->conflict_new =          *(entry->conflict_new)          ? apr_pstrdup(pool, entry->conflict_new) : NULL;      }    if ((entry->conflict_wrk         = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CONFLICT_WRK,                        APR_HASH_KEY_STRING)))      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_CONFLICT_WRK;        /* Normalize "" (used by the log runner) to NULL */        entry->conflict_wrk =          *(entry->conflict_wrk)          ? apr_pstrdup(pool, entry->conflict_wrk) : NULL;      }  }  /* Is this entry copied? */  SVN_ERR(do_bool_attr(&entry->copied,                       modify_flags, SVN_WC__ENTRY_MODIFY_COPIED,                       atts, SVN_WC__ENTRY_ATTR_COPIED, name));  {    const char *revstr;    entry->copyfrom_url = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_COPYFROM_URL,                                       APR_HASH_KEY_STRING);    if (entry->copyfrom_url)      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_COPYFROM_URL;        entry->copyfrom_url = apr_pstrdup(pool, entry->copyfrom_url);      }    revstr = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_COPYFROM_REV,                           APR_HASH_KEY_STRING);    if (revstr)      {        entry->copyfrom_rev = SVN_STR_TO_REV(revstr);        *modify_flags |= SVN_WC__ENTRY_MODIFY_COPYFROM_REV;      }  }  /* Is this entry deleted? */  SVN_ERR(do_bool_attr(&entry->deleted,                       modify_flags, SVN_WC__ENTRY_MODIFY_DELETED,                       atts, SVN_WC__ENTRY_ATTR_DELETED, name));  /* Is this entry absent? */  SVN_ERR(do_bool_attr(&entry->absent,                       modify_flags, SVN_WC__ENTRY_MODIFY_ABSENT,                       atts, SVN_WC__ENTRY_ATTR_ABSENT, name));  /* Is this entry incomplete? */  SVN_ERR(do_bool_attr(&entry->incomplete,                       modify_flags, SVN_WC__ENTRY_MODIFY_INCOMPLETE,                       atts, SVN_WC__ENTRY_ATTR_INCOMPLETE, name));  /* Attempt to set up timestamps. */  {    const char *text_timestr, *prop_timestr;        text_timestr = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_TEXT_TIME,                                APR_HASH_KEY_STRING);    if (text_timestr)      {        if (! strcmp(text_timestr, SVN_WC__TIMESTAMP_WC))          {            /* Special case:  a magic string that means 'get this value               from the working copy' -- we ignore it here, trusting               that the caller of this function know what to do about               it.  */          }        else          SVN_ERR(svn_time_from_cstring(&entry->text_time, text_timestr,                                        pool));                *modify_flags |= SVN_WC__ENTRY_MODIFY_TEXT_TIME;      }        prop_timestr = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_PROP_TIME,                                APR_HASH_KEY_STRING);    if (prop_timestr)      {        if (! strcmp(prop_timestr, SVN_WC__TIMESTAMP_WC))          {            /* Special case:  a magic string that means 'get this value               from the working copy' -- we ignore it here, trusting               that the caller of this function know what to do about               it.  */          }        else          SVN_ERR(svn_time_from_cstring(&entry->prop_time, prop_timestr,                                        pool));                *modify_flags |= SVN_WC__ENTRY_MODIFY_PROP_TIME;      }  }  /* Checksum. */  {    entry->checksum = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CHECKSUM,                                   APR_HASH_KEY_STRING);    if (entry->checksum)      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_CHECKSUM;        entry->checksum = apr_pstrdup(pool, entry->checksum);      }  }  /* UUID. */  {    entry->uuid = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_UUID,                               APR_HASH_KEY_STRING);    if (entry->uuid)      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_UUID;        entry->uuid = apr_pstrdup(pool, entry->uuid);      }  }  /* Setup last-committed values. */  {    const char *cmt_datestr, *cmt_revstr;        cmt_datestr = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CMT_DATE,                               APR_HASH_KEY_STRING);    if (cmt_datestr)      {        SVN_ERR(svn_time_from_cstring(&entry->cmt_date, cmt_datestr, pool));        *modify_flags |= SVN_WC__ENTRY_MODIFY_CMT_DATE;      }    else      entry->cmt_date = 0;    cmt_revstr = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CMT_REV,                              APR_HASH_KEY_STRING);    if (cmt_revstr)      {        entry->cmt_rev = SVN_STR_TO_REV(cmt_revstr);        *modify_flags |= SVN_WC__ENTRY_MODIFY_CMT_REV;      }    else      entry->cmt_rev = SVN_INVALID_REVNUM;    entry->cmt_author = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_CMT_AUTHOR,                                     APR_HASH_KEY_STRING);    if (entry->cmt_author)      {        *modify_flags |= SVN_WC__ENTRY_MODIFY_CMT_AUTHOR;        entry->cmt_author = apr_pstrdup(pool, entry->cmt_author);      }  }  /* Lock token. */  entry->lock_token = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_LOCK_TOKEN,                                   APR_HASH_KEY_STRING);  if (entry->lock_token)    {      *modify_flags |= SVN_WC__ENTRY_MODIFY_LOCK_TOKEN;      entry->lock_token = apr_pstrdup(pool, entry->lock_token);    }  /* lock owner. */  entry->lock_owner = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_LOCK_OWNER,                                   APR_HASH_KEY_STRING);  if (entry->lock_owner)    {      *modify_flags |= SVN_WC__ENTRY_MODIFY_LOCK_OWNER;      entry->lock_owner = apr_pstrdup(pool, entry->lock_owner);    }  /* lock comment. */  entry->lock_comment = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_LOCK_COMMENT,                                     APR_HASH_KEY_STRING);  if (entry->lock_comment)    {      *modify_flags |= SVN_WC__ENTRY_MODIFY_LOCK_COMMENT;      entry->lock_comment = apr_pstrdup(pool, entry->lock_comment);    }  /* lock creation date. */  {    const char *cdate_str =       apr_hash_get(atts, SVN_WC__ENTRY_ATTR_LOCK_CREATION_DATE,                   APR_HASH_KEY_STRING);    if (cdate_str)      {        SVN_ERR(svn_time_from_cstring(&entry->lock_creation_date,                                       cdate_str, pool));        *modify_flags |= SVN_WC__ENTRY_MODIFY_LOCK_CREATION_DATE;      }  }    /* has-props flag. */  SVN_ERR(do_bool_attr(&entry->has_props,                       modify_flags, SVN_WC__ENTRY_MODIFY_HAS_PROPS,                       atts, SVN_WC__ENTRY_ATTR_HAS_PROPS, name));  /* has-prop-mods flag. */  {    const char *has_prop_mods_str      = apr_hash_get(atts, SVN_WC__ENTRY_ATTR_HAS_PROP_MODS,                     APR_HASH_KEY_STRING);            if (has_prop_mods_str)      {        if (strcmp(has_prop_mods_str, "true") == 0)          entry->has_prop_mods = TRUE;        else if (strcmp(has_prop_mods_str, "false") != 0)          return svn_error_createf             (SVN_ERR_ENTRY_ATTRIBUTE_INVALID, NULL,             _("Entry '%s' has invalid '%s' value"),             (name ? name : SVN_WC_ENTRY_THIS_DIR),             SVN_WC__ENTRY_ATTR_HAS_PROP_MODS);        *modify_flags |= SVN_WC__ENTRY_MODIFY_HAS_PROP_MODS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -