亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? serf.c

?? subversion-1.4.5.tar.gz 配置svn的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * serf.c :  entry point for ra_serf * * ==================================================================== * Copyright (c) 2006 CollabNet.  All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution.  The terms * are also available at http://subversion.tigris.org/license-1.html. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * * This software consists of voluntary contributions made by many * individuals.  For exact contribution history, see the revision * history and logs, available at http://subversion.tigris.org/. * ==================================================================== */#define APR_WANT_STRFUNC#include <apr_want.h>#include <apr_uri.h>#include <expat.h>#include <serf.h>#include "svn_pools.h"#include "svn_ra.h"#include "svn_dav.h"#include "svn_xml.h"#include "../libsvn_ra/ra_loader.h"#include "svn_config.h"#include "svn_delta.h"#include "svn_version.h"#include "svn_path.h"#include "svn_time.h"#include "svn_private_config.h"#include "ra_serf.h"static const svn_version_t *ra_serf_version(void){  SVN_VERSION_BODY;}#define RA_SERF_DESCRIPTION \    N_("Access repository via WebDAV protocol through serf.")static const char *ra_serf_get_description(void){  return _(RA_SERF_DESCRIPTION);}static const char * const *ra_serf_get_schemes(apr_pool_t *pool){  static const char *serf_ssl[] = { "http", "https", NULL };#if 0  /* ### Temporary: to shut up a warning. */  static const char *serf_no_ssl[] = { "http", NULL };#endif  /* TODO: Runtime detection. */  return serf_ssl;}static svn_error_t *load_config(svn_ra_serf__session_t *session,            apr_hash_t *config_hash,            apr_pool_t *pool){  svn_config_t *config;  const char *server_group;  config = apr_hash_get(config_hash, SVN_CONFIG_CATEGORY_SERVERS,                        APR_HASH_KEY_STRING);  SVN_ERR(svn_config_get_bool(config, &session->using_compression,                              SVN_CONFIG_SECTION_GLOBAL,                              SVN_CONFIG_OPTION_HTTP_COMPRESSION, TRUE));  server_group = svn_config_find_group(config,                                       session->repos_url.hostname,                                       SVN_CONFIG_SECTION_GROUPS, pool);  if (server_group)    {      SVN_ERR(svn_config_get_bool(config, &session->using_compression,                                  server_group,                                  SVN_CONFIG_OPTION_HTTP_COMPRESSION,                                  session->using_compression));    }  return SVN_NO_ERROR;}static svn_error_t *svn_ra_serf__open(svn_ra_session_t *session,                  const char *repos_URL,                  const svn_ra_callbacks2_t *callbacks,                  void *callback_baton,                  apr_hash_t *config,                  apr_pool_t *pool){  apr_status_t status;  svn_ra_serf__session_t *serf_sess;  apr_uri_t url;  serf_sess = apr_pcalloc(pool, sizeof(*serf_sess));  apr_pool_create(&serf_sess->pool, pool);  serf_sess->bkt_alloc = serf_bucket_allocator_create(serf_sess->pool, NULL,                                                      NULL);  serf_sess->cached_props = apr_hash_make(pool);  serf_sess->wc_callbacks = callbacks;  serf_sess->wc_callback_baton = callback_baton;  /* todo: reuse serf context across sessions */  serf_sess->context = serf_context_create(pool);  apr_uri_parse(serf_sess->pool, repos_URL, &url);  serf_sess->repos_url = url;  serf_sess->repos_url_str = apr_pstrdup(serf_sess->pool, repos_URL);  if (!url.port)    {      url.port = apr_uri_port_of_scheme(url.scheme);    }  serf_sess->using_ssl = (strcasecmp(url.scheme, "https") == 0);  SVN_ERR(load_config(serf_sess, config, pool));  /* register cleanups */  apr_pool_cleanup_register(serf_sess->pool, serf_sess,                            svn_ra_serf__cleanup_serf_session,                            apr_pool_cleanup_null);  serf_sess->conns = apr_palloc(pool, sizeof(*serf_sess->conns) * 4);  serf_sess->conns[0] = apr_pcalloc(pool, sizeof(*serf_sess->conns[0]));  serf_sess->conns[0]->bkt_alloc =          serf_bucket_allocator_create(serf_sess->pool, NULL, NULL);  /* fetch the DNS record for this host */  status = apr_sockaddr_info_get(&serf_sess->conns[0]->address, url.hostname,                                 APR_UNSPEC, url.port, 0, pool);  if (status)    {      return svn_error_createf(status, NULL,                               _("Could not lookup hostname: %s://%s"),                               url.scheme, url.hostname);    }  serf_sess->conns[0]->using_ssl = serf_sess->using_ssl;  serf_sess->conns[0]->using_compression = serf_sess->using_compression;  serf_sess->conns[0]->hostinfo = url.hostinfo;  /* go ahead and tell serf about the connection. */  serf_sess->conns[0]->conn =      serf_connection_create(serf_sess->context, serf_sess->conns[0]->address,                             svn_ra_serf__conn_setup, serf_sess->conns[0],                             svn_ra_serf__conn_closed, serf_sess->conns[0],                             serf_sess->pool);  serf_sess->num_conns = 1;  session->priv = serf_sess;  return SVN_NO_ERROR;}static svn_error_t *svn_ra_serf__reparent(svn_ra_session_t *ra_session,                      const char *url,                      apr_pool_t *pool){  svn_ra_serf__session_t *session = ra_session->priv;  apr_uri_t new_url;  /* If it's the URL we already have, wave our hands and do nothing. */  if (strcmp(session->repos_url_str, url) == 0)    {      return SVN_NO_ERROR;    }  /* Do we need to check that it's the same host and port? */  apr_uri_parse(session->pool, url, &new_url);  session->repos_url.path = new_url.path;  session->repos_url_str = apr_pstrdup(pool, url);  return SVN_NO_ERROR;}static svn_error_t *svn_ra_serf__get_latest_revnum(svn_ra_session_t *ra_session,                               svn_revnum_t *latest_revnum,                               apr_pool_t *pool){  apr_hash_t *props;  svn_ra_serf__session_t *session = ra_session->priv;  const char *vcc_url, *baseline_url, *version_name;  props = apr_hash_make(pool);  SVN_ERR(svn_ra_serf__discover_root(&vcc_url, NULL,                                     session, session->conns[0],                                     session->repos_url.path, pool));  if (!vcc_url)    {      abort();    }  /* Using the version-controlled-configuration, fetch the checked-in prop. */  SVN_ERR(svn_ra_serf__retrieve_props(props, session, session->conns[0],                                      vcc_url, SVN_INVALID_REVNUM, "0",                                      checked_in_props, pool));  baseline_url = svn_ra_serf__get_prop(props, vcc_url,                                       "DAV:", "checked-in");  if (!baseline_url)    {      abort();    }  /* Using the checked-in property, fetch:   *    baseline-connection *and* version-name   */  SVN_ERR(svn_ra_serf__retrieve_props(props, session, session->conns[0],                                      baseline_url, SVN_INVALID_REVNUM,                                      "0", baseline_props, pool));  version_name = svn_ra_serf__get_prop(props, baseline_url,                                       "DAV:", "version-name");  if (!version_name)    {      abort();    }  *latest_revnum = SVN_STR_TO_REV(version_name);  return SVN_NO_ERROR;}static svn_error_t *svn_ra_serf__rev_proplist(svn_ra_session_t *ra_session,                          svn_revnum_t rev,                          apr_hash_t **ret_props,                          apr_pool_t *pool){  svn_ra_serf__session_t *session = ra_session->priv;  apr_hash_t *props;  const char *vcc_url;  props = apr_hash_make(pool);  *ret_props = apr_hash_make(pool);  SVN_ERR(svn_ra_serf__discover_root(&vcc_url, NULL,                                     session, session->conns[0],                                     session->repos_url.path, pool));  SVN_ERR(svn_ra_serf__retrieve_props(props, session, session->conns[0],                                      vcc_url, rev, "0", all_props, pool));  svn_ra_serf__walk_all_props(props, vcc_url, rev, svn_ra_serf__set_bare_props,                              *ret_props, pool);  return SVN_NO_ERROR;}static svn_error_t *svn_ra_serf__rev_prop(svn_ra_session_t *session,                      svn_revnum_t rev,                      const char *name,                      svn_string_t **value,                      apr_pool_t *pool){  apr_hash_t *props;  SVN_ERR(svn_ra_serf__rev_proplist(session, rev, &props, pool));  *value = apr_hash_get(props, name, APR_HASH_KEY_STRING);  return SVN_NO_ERROR;}static svn_error_t *fetch_path_props(svn_ra_serf__propfind_context_t **ret_prop_ctx,                 apr_hash_t **ret_props,                 const char **ret_path,                 svn_revnum_t *ret_revision,                 svn_ra_serf__session_t *session,                 const char *rel_path,                 svn_revnum_t revision,                 const svn_ra_serf__dav_props_t *desired_props,                 apr_pool_t *pool){  svn_ra_serf__propfind_context_t *prop_ctx;  apr_hash_t *props;  const char *path;  path = session->repos_url.path;  /* If we have a relative path, append it. */  if (rel_path)    {      path = svn_path_url_add_component(path, rel_path, pool);    }  props = apr_hash_make(pool);  prop_ctx = NULL;  /* If we were given a specific revision, we have to fetch the VCC and   * do a PROPFIND off of that.   */  if (!SVN_IS_VALID_REVNUM(revision))    {      svn_ra_serf__deliver_props(&prop_ctx, props, session, session->conns[0],                                 path, revision, "0", desired_props, TRUE,                                 NULL, session->pool);    }  else    {      const char *vcc_url, *relative_url, *basecoll_url;      SVN_ERR(svn_ra_serf__discover_root(&vcc_url, &relative_url,                                         session, session->conns[0],                                         path, pool));            SVN_ERR(svn_ra_serf__retrieve_props(props, session, session->conns[0],                                          vcc_url, revision,                                          "0", baseline_props, pool));            basecoll_url = svn_ra_serf__get_ver_prop(props, vcc_url, revision,                                               "DAV:", "baseline-collection");            if (!basecoll_url)        {          abort();        }          /* We will try again with our new path; however, we're now        * technically an unversioned resource because we are accessing       * the revision's baseline-collection.       */        prop_ctx = NULL;      path = svn_path_url_add_component(basecoll_url, relative_url, pool);      revision = SVN_INVALID_REVNUM;      svn_ra_serf__deliver_props(&prop_ctx, props, session, session->conns[0],                                 path, revision, "0",                                 desired_props, TRUE,                                 NULL, session->pool);    }  SVN_ERR(svn_ra_serf__wait_for_props(prop_ctx, session, pool));  *ret_path = path;  *ret_prop_ctx = prop_ctx;  *ret_props = props;  *ret_revision = revision;  return SVN_NO_ERROR;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.欧美日韩国产在线| 色中色一区二区| 亚洲女同女同女同女同女同69| 欧美性色aⅴ视频一区日韩精品| 麻豆freexxxx性91精品| 亚洲精品视频观看| 国产亚洲女人久久久久毛片| 欧美日韩在线播| 99久久精品免费观看| 经典三级视频一区| 日韩中文字幕一区二区三区| 亚洲欧美视频在线观看视频| 久久精品视频一区二区| 3751色影院一区二区三区| 色综合天天综合网天天狠天天| 国产精品一二三四五| 免费三级欧美电影| 国产麻豆视频精品| 亚洲一区二区四区蜜桃| 国产精品久久久久久久第一福利| 精品国产麻豆免费人成网站| 制服丝袜亚洲色图| 欧美午夜电影网| 91福利资源站| 色诱视频网站一区| 99精品黄色片免费大全| 国产成人av电影在线播放| 久久99精品国产91久久来源 | 日本不卡视频在线| 亚洲国产精品一区二区久久恐怖片 | 午夜精品一区在线观看| 亚洲一区二区三区四区五区黄 | 精品av久久707| 日韩视频在线你懂得| 3atv一区二区三区| 日韩一区二区免费在线电影| 在线播放/欧美激情| 欧美美女视频在线观看| 欧美日本精品一区二区三区| 欧美视频中文一区二区三区在线观看| 97久久精品人人做人人爽| 99久久99久久综合| 91色视频在线| 欧美在线看片a免费观看| 欧美日韩一区国产| 69成人精品免费视频| 欧美一级理论片| 精品国产网站在线观看| 国产女主播在线一区二区| 亚洲国产成人在线| 亚洲欧美偷拍三级| 偷窥少妇高潮呻吟av久久免费| 亚洲电影激情视频网站| 免费在线观看日韩欧美| 国产九九视频一区二区三区| 国产91清纯白嫩初高中在线观看 | 这里只有精品电影| 日韩精品中文字幕在线不卡尤物 | 欧美一区二区三区在线| 精品国产91九色蝌蚪| 国产亚洲欧洲一区高清在线观看| 亚洲国产精品av| 亚洲另类春色校园小说| 午夜在线成人av| 精品一区二区三区香蕉蜜桃| 成人深夜视频在线观看| 色久优优欧美色久优优| 日韩一区二区电影在线| 国产日韩欧美电影| 亚洲一区二区欧美激情| 91尤物视频在线观看| 色www精品视频在线观看| 欧美精品少妇一区二区三区| 精品国产制服丝袜高跟| 亚洲欧洲精品天堂一级 | 精品福利在线导航| ...xxx性欧美| 日本视频在线一区| 成人激情黄色小说| 欧美日韩成人一区二区| 国产日韩欧美不卡在线| 亚洲444eee在线观看| 国产麻豆91精品| 欧美三级日韩三级| 久久久不卡网国产精品二区| 亚洲一区在线电影| 高清成人在线观看| 8x福利精品第一导航| 国产精品久久久久精k8| 青青草一区二区三区| 91色九色蝌蚪| 久久久欧美精品sm网站| 亚洲地区一二三色| av一区二区三区四区| 欧美一级高清片| 一区二区三区成人| 国产99久久久精品| 欧美一级片在线观看| 亚洲精品视频在线观看网站| 精品制服美女丁香| 欧美日韩和欧美的一区二区| 国产精品视频一二三区| 久久超碰97中文字幕| 欧美日韩一区二区欧美激情| 国产精品入口麻豆九色| 国内精品久久久久影院一蜜桃| 欧美日韩在线直播| 亚洲精品国产成人久久av盗摄| 国产精品资源站在线| 日韩精品一区二区三区在线播放 | 国产成人精品免费在线| 欧美一级一区二区| 亚洲国产精品尤物yw在线观看| proumb性欧美在线观看| 久久日韩粉嫩一区二区三区| 日韩精品亚洲专区| 欧美日韩亚洲综合一区二区三区| 亚洲人成在线观看一区二区| 成人性生交大片免费看中文| 欧美成人激情免费网| 日韩在线一二三区| 在线不卡a资源高清| 亚洲成人激情av| 在线观看91视频| 亚洲制服丝袜av| 在线观看一区二区视频| 亚洲欧美另类综合偷拍| 99riav一区二区三区| 亚洲欧洲日产国码二区| 成人黄色国产精品网站大全在线免费观看 | 欧美这里有精品| 一个色在线综合| 欧美中文字幕一区二区三区| 一区二区免费看| 欧美影院一区二区三区| 亚洲一区二区三区四区在线免费观看 | 国产欧美视频在线观看| 国产成都精品91一区二区三| 久久婷婷国产综合精品青草| 国产乱码精品一区二区三区忘忧草| 日韩精品一区二区三区在线观看 | 亚洲综合丁香婷婷六月香| 色老头久久综合| 亚洲一区二区精品视频| 欧美日韩一区国产| 日本sm残虐另类| 欧美精品一区二区三区在线播放| 国产在线播精品第三| 国产日韩欧美麻豆| 91视频免费观看| 亚洲国产精品久久久久秋霞影院| 欧美日韩一卡二卡三卡| 青青草国产精品亚洲专区无| 精品三级在线看| 国产精品1024| 亚洲桃色在线一区| 欧美怡红院视频| 麻豆免费看一区二区三区| 精品欧美久久久| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 日本精品视频一区二区三区| 亚洲va欧美va天堂v国产综合| 欧美一级二级在线观看| 国产成人免费视频精品含羞草妖精| 国产精品久久精品日日| 欧美日本不卡视频| 国产精品伊人色| 一区二区欧美在线观看| 欧美一级xxx| 99视频有精品| 日本少妇一区二区| 国产精品福利一区二区| 欧美日韩精品三区| 国产精品一区2区| 亚洲黄色免费网站| 欧美大片在线观看| 91亚洲精品久久久蜜桃| 日本中文字幕一区| 亚洲国产精品成人综合 | 日韩三级免费观看| 99re亚洲国产精品| 日本成人在线不卡视频| 国产精品第四页| 日韩午夜精品视频| 色婷婷国产精品久久包臀| 久久精品国产第一区二区三区| 国产精品久久久久久久久免费樱桃 | 久久久亚洲午夜电影| 欧美影院一区二区三区| 国产成人一区在线| 首页国产欧美久久| 国产精品人成在线观看免费| 欧美老肥妇做.爰bbww| 成人av在线播放网址| 免费在线看成人av| 亚洲精品国产精品乱码不99| 久久这里只有精品首页| 欧美日韩视频不卡| 91在线视频观看| 国产乱人伦偷精品视频免下载|