1251881Speter/*
2251881Speter * revision_status.c: report the revision range and status of a working copy
3251881Speter *
4251881Speter * ====================================================================
5251881Speter *    Licensed to the Apache Software Foundation (ASF) under one
6251881Speter *    or more contributor license agreements.  See the NOTICE file
7251881Speter *    distributed with this work for additional information
8251881Speter *    regarding copyright ownership.  The ASF licenses this file
9251881Speter *    to you under the Apache License, Version 2.0 (the
10251881Speter *    "License"); you may not use this file except in compliance
11251881Speter *    with the License.  You may obtain a copy of the License at
12251881Speter *
13251881Speter *      http://www.apache.org/licenses/LICENSE-2.0
14251881Speter *
15251881Speter *    Unless required by applicable law or agreed to in writing,
16251881Speter *    software distributed under the License is distributed on an
17251881Speter *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18251881Speter *    KIND, either express or implied.  See the License for the
19251881Speter *    specific language governing permissions and limitations
20251881Speter *    under the License.
21251881Speter * ====================================================================
22251881Speter */
23251881Speter
24251881Speter#include "svn_wc.h"
25251881Speter#include "svn_dirent_uri.h"
26251881Speter#include "wc_db.h"
27251881Speter#include "wc.h"
28251881Speter#include "props.h"
29251881Speter
30251881Speter#include "private/svn_wc_private.h"
31251881Speter
32251881Speter#include "svn_private_config.h"
33251881Speter
34251881Spetersvn_error_t *
35251881Spetersvn_wc_revision_status2(svn_wc_revision_status_t **result_p,
36251881Speter                        svn_wc_context_t *wc_ctx,
37251881Speter                        const char *local_abspath,
38251881Speter                        const char *trail_url,
39251881Speter                        svn_boolean_t committed,
40251881Speter                        svn_cancel_func_t cancel_func,
41251881Speter                        void *cancel_baton,
42251881Speter                        apr_pool_t *result_pool,
43251881Speter                        apr_pool_t *scratch_pool)
44251881Speter{
45251881Speter  svn_wc_revision_status_t *result = apr_pcalloc(result_pool, sizeof(*result));
46251881Speter
47251881Speter  *result_p = result;
48251881Speter
49251881Speter  SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
50251881Speter
51251881Speter  /* set result as nil */
52251881Speter  result->min_rev  = SVN_INVALID_REVNUM;
53251881Speter  result->max_rev  = SVN_INVALID_REVNUM;
54251881Speter  result->switched = FALSE;
55251881Speter  result->modified = FALSE;
56251881Speter  result->sparse_checkout = FALSE;
57251881Speter
58251881Speter  SVN_ERR(svn_wc__db_revision_status(&result->min_rev, &result->max_rev,
59251881Speter                                     &result->sparse_checkout,
60251881Speter                                     &result->modified,
61251881Speter                                     &result->switched,
62251881Speter                                     wc_ctx->db, local_abspath, trail_url,
63289180Speter                                     committed,
64251881Speter                                     scratch_pool));
65251881Speter
66289180Speter  if (!result->modified)
67289180Speter    SVN_ERR(svn_wc__node_has_local_mods(&result->modified, NULL,
68289180Speter                                        wc_ctx->db, local_abspath, TRUE,
69289180Speter                                        cancel_func, cancel_baton,
70289180Speter                                        scratch_pool));
71289180Speter
72251881Speter  return SVN_NO_ERROR;
73251881Speter}
74