| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
|/ |
|
|
|
|
|
|
|
|
|
|
| |
We used to move `data_start` forward, which is wrong as that needs to
point to the beginning of the buffer in order to perform size
calculations.
Introduce a `write_start` variable which indicates where we should start
writing from, which is what the `data_start` was being wrongly reused to
be.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At some moment git_config_delete_entry lost the ability to delete one entry of
a multivar configuration. The moment you had more than one fetch or push
ref spec for a remote you will not be able to save that remote anymore. The
changes in network::remote::remotes::save show that problem.
I needed to create a new git_config_delete_multivar because I was not able to
remove one or several entries of a multivar config with the current API.
Several tries modifying how git_config_set_multivar(..., NULL) behaved were
not successful.
git_config_delete_multivar is very similar to git_config_set_multivar, and
delegates into config_delete_multivar of config_file. This function search
for the cvar_t that will be deleted, storing them in a temporal array, and
rebuilding the linked list. After calling config_write to delete the entries,
the cvar_t stored in the temporal array are freed.
There is a little fix in config_write, it avoids an infinite loop when using
a regular expression (case for the multivars). This error was found by the
test network::remote::remotes::tagopt.
|
|
|
|
| |
escape any characters
|
|\
| |
| | |
Fix warning
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This makes the git_buf struct that was used internally into an
externally available structure and eliminates the git_buffer.
As part of that, some of the special cases that arose with the
externally used git_buffer were blended into the git_buf, such as
being careful about git_buf objects that may have a NULL ptr and
allowing for bufs with a valid ptr and size but zero asize as a
way of referring to externally owned data.
|
| |
| |
| |
| |
| |
| |
| | |
As the include depth increases, the chance of a realloc
increases. This means that whenever we run git_array_alloc() or call
config_parse(), we need to remember what our reader's index is so we
can look it up again.
|
| | |
|
| |
| |
| |
| |
| | |
When two or more variables of the same name exist and the user asks
for a scalar, we must return the latest value assign to it.
|
| |
| |
| |
| |
| |
| | |
We need to refresh the variables from the included files if they are
changed, so loop over all included files and re-parse the files if any
of them has changed.
|
| |
| |
| |
| |
| | |
When refreshing we need to refresh if any of the files have been
touched, so we need to keep the list.
|
| |
| |
| |
| |
| | |
Relative, absolute and home-relative paths are supported. The
recursion limit it set at 10, just like in git.
|
|/
|
|
|
|
|
| |
In order to support config includes, we must differentiate between the
backend's main file and the file we are currently parsing.
This lays the groundwork for includes, keeping the current behaviours.
|
|\
| |
| | |
Configuration iterators redux
|
| |
| |
| |
| |
| | |
Build it on top of the normal iterator instead, which lets use re-use
a lot of code.
|
| | |
|
| |
| |
| |
| | |
As the name suggests, it iterates over all the entries
|
| |
| |
| |
| | |
Implement the foreach version as a wrapper around the iterator.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Like we have in the references iterator, next and free belong in the
iterator itself.
|
| |
| |
| |
| |
| | |
The plain function will return an iterator, so move this one out of
the way.
|
| |
| |
| |
| |
| | |
Really report an error in foreach if we fail to allocate the iterator,
and don't fail if the config is emtpy.
|
| | |
|
| |
| |
| |
| | |
Make the iterator structure opaque and make sure it compiles.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
new functions in struct git_config_backend:
* iterator_new(...)
* iterator_free(...)
* next(...)
The old callback based foreach style can still be used with `git_config_backend_foreach_match`
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This step is needed to easily add iterators to git_config_backend
As well use these new git_strmap functions to implement foreach
* git_strmap_iter
* git_strmap_has_data(...)
* git_strmap_begin(...)
* git_strmap_end(...)
* git_strmap_next(...)
|
|\ \
| |/
|/| |
config: allow setting empty string as value
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
`git_config_set_string(config, "config.section", "")` fails when
escaping the value.
The buffer in `escape_value` is allocated without NULL-termination. And
in case of empty string 0 is passed for buffer size in `git_buf_grow`.
`git_buf_detach` returns NULL when the allocated size is 0 and that
leads to an error return in `GITERR_CHECK_ALLOC` called after
`escape_value`
The change in `config_file.c` was suggested by Russell Belfer <rb@github.com>
|
|/
|
|
|
| |
Parse config headers that have the last quote on the
line quoted instead of walking off the end.
|
| |
|
|
|
|
|
|
|
|
| |
The GIT_CONFIG_LEVEL constants actually work well as an enum
because they are mutually exclusive, so this adds a typedef to
the enum and uses that everywhere that one of these constants are
expected, instead of the old code that typically used an unsigned
int.
|
| |
|
|\
| |
| | |
Revamp the refspec handling
|
| |
| |
| |
| |
| | |
Adding a multivar when there are no variables with that name set
should set the variable instead of failing.
|
|/
|
|
|
|
| |
Moving backend implementor objects into include/git2/sys so the
APIs can be isolated from the ones that normal libgit2 users
would be likely to use.
|
|
|
|
|
|
|
|
|
| |
This is a new implementation of core git's config key checking
rules that prevents non-alphanumeric characters (and '-') for
the top-level section and key names inside of config files.
This also validates the target section name when renaming
sections.
|
|
|
|
|
|
| |
Check whether the backslash at the end of the line is being escaped or
not so as not to consider it a continuation marker when it's e.g. a
Windows-style path.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are many scattered functions that look into the contents of
buffers to do various text manipulations (such as escaping or
unescaping data, calculating text stats, guessing if content is
binary, etc). This groups all those functions together into a
new file and converts the code to use that.
This has two enhancements to existing functionality. The old
text stats function is significantly rewritten and the BOM
detection code was extended (although largely we can't deal with
anything other than a UTF8 BOM).
|
| |
|
| |
|
|
|
|
|
|
| |
Remove words such as fuck, crap, shit etc.
Remove other potentially offensive words from comments.
Tidy up other geopolicital terms in comments.
|
|
|
|
|
|
| |
'[section] variable' and '[section] variable =' behave differently
when parsed as booleans, so we need to store that distinction
internally.
|
|
|
|
|
|
| |
invalidread with the unittest (just added some \n at the end of the file)
- Fix config_file.c
|