Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
d3ca89fe
Commit
d3ca89fe
authored
May 23, 2011
by
Vicent Marti
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fileops: Cleanup
parent
cc2ac058
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
2 additions
and
100 deletions
+2
-100
src/fileops.c
+2
-93
src/fileops.h
+0
-7
No files found.
src/fileops.c
View file @
d3ca89fe
...
...
@@ -164,7 +164,7 @@ int gitfo_read_file(gitfo_buf *obj, const char *path)
if
(((
size
=
gitfo_size
(
fd
))
<
0
)
||
!
git__is_sizet
(
size
+
1
))
{
gitfo_close
(
fd
);
return
git__throw
(
GIT_ERROR
,
"Failed to read file `%s`.
Either an error occured while calculating its size or the file is too larg
e"
,
path
);
return
git__throw
(
GIT_ERROR
,
"Failed to read file `%s`.
An error occured while calculating its siz
e"
,
path
);
}
len
=
(
size_t
)
size
;
...
...
@@ -220,7 +220,7 @@ int gitfo_mv(const char *from, const char *to)
#endif
if
(
error
<
GIT_SUCCESS
)
return
git__throw
(
error
,
"Failed to move file from `%s`to `%s`"
,
from
,
to
);
return
git__throw
(
error
,
"Failed to move file from `%s`
to `%s`"
,
from
,
to
);
return
GIT_SUCCESS
;
}
...
...
@@ -245,97 +245,6 @@ void gitfo_free_map(git_map *out)
git__munmap
(
out
);
}
/* cached diskio */
struct
gitfo_cache
{
git_file
fd
;
size_t
cache_size
,
pos
;
unsigned
char
*
cache
;
};
gitfo_cache
*
gitfo_enable_caching
(
git_file
fd
,
size_t
cache_size
)
{
gitfo_cache
*
ioc
;
ioc
=
git__malloc
(
sizeof
(
*
ioc
));
if
(
!
ioc
)
return
NULL
;
ioc
->
fd
=
fd
;
ioc
->
pos
=
0
;
ioc
->
cache_size
=
cache_size
;
ioc
->
cache
=
git__malloc
(
cache_size
);
if
(
!
ioc
->
cache
)
{
free
(
ioc
);
return
NULL
;
}
return
ioc
;
}
GIT_INLINE
(
void
)
gitfo_add_to_cache
(
gitfo_cache
*
ioc
,
void
*
buf
,
size_t
len
)
{
memcpy
(
ioc
->
cache
+
ioc
->
pos
,
buf
,
len
);
ioc
->
pos
+=
len
;
}
int
gitfo_flush_cached
(
gitfo_cache
*
ioc
)
{
int
result
=
GIT_SUCCESS
;
if
(
ioc
->
pos
)
{
result
=
gitfo_write
(
ioc
->
fd
,
ioc
->
cache
,
ioc
->
pos
);
ioc
->
pos
=
0
;
}
if
(
result
<
GIT_SUCCESS
)
return
git__rethrow
(
result
,
"Failed to flush cache"
);
return
result
;
}
int
gitfo_write_cached
(
gitfo_cache
*
ioc
,
void
*
buff
,
size_t
len
)
{
unsigned
char
*
buf
=
buff
;
for
(;;)
{
size_t
space_left
=
ioc
->
cache_size
-
ioc
->
pos
;
/* cache if it's small */
if
(
space_left
>
len
)
{
gitfo_add_to_cache
(
ioc
,
buf
,
len
);
return
GIT_SUCCESS
;
}
/* flush the cache if it doesn't fit */
if
(
ioc
->
pos
)
{
int
rc
;
gitfo_add_to_cache
(
ioc
,
buf
,
space_left
);
rc
=
gitfo_flush_cached
(
ioc
);
if
(
rc
<
0
)
return
rc
;
len
-=
space_left
;
buf
+=
space_left
;
}
/* write too-large chunks immediately */
if
(
len
>
ioc
->
cache_size
)
return
gitfo_write
(
ioc
->
fd
,
buf
,
len
);
}
}
int
gitfo_close_cached
(
gitfo_cache
*
ioc
)
{
git_file
fd
;
if
(
gitfo_flush_cached
(
ioc
)
<
GIT_SUCCESS
)
return
git__throw
(
GIT_ERROR
,
"Failed to close cache. Could not flush cache"
);
fd
=
ioc
->
fd
;
free
(
ioc
->
cache
);
free
(
ioc
);
return
gitfo_close
(
fd
);
}
int
gitfo_dirent
(
char
*
path
,
size_t
path_sz
,
...
...
src/fileops.h
View file @
d3ca89fe
...
...
@@ -47,7 +47,6 @@ extern int git__fsync(int fd);
#define GITFO_BUF_INIT {NULL, 0}
typedef
int
git_file
;
typedef
struct
gitfo_cache
gitfo_cache
;
typedef
struct
{
/* file io buffer */
void
*
data
;
/* data bytes */
...
...
@@ -135,12 +134,6 @@ extern int gitfo_dirent(
int
(
*
fn
)(
void
*
,
char
*
),
void
*
state
);
extern
gitfo_cache
*
gitfo_enable_caching
(
git_file
fd
,
size_t
cache_size
);
extern
int
gitfo_write_cached
(
gitfo_cache
*
ioc
,
void
*
buf
,
size_t
len
);
extern
int
gitfo_flush_cached
(
gitfo_cache
*
ioc
);
extern
int
gitfo_close_cached
(
gitfo_cache
*
ioc
);
extern
int
gitfo_cmp_path
(
const
char
*
name1
,
int
len1
,
int
isdir1
,
const
char
*
name2
,
int
len2
,
int
isdir2
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment