MCPcopy Create free account
hub / github.com/apache/httpd / dav_fs_remove_locknull_member

Function dav_fs_remove_locknull_member

modules/dav/fs/lock.c:865–909  ·  view source on GitHub ↗

** dav_fs_remove_locknull_member: Removes filename from the locknull list ** for directory path. */

Source from the content-addressed store, hash-verified

863** for directory path.
864*/
865static dav_error * dav_fs_remove_locknull_member(apr_pool_t *p,
866 const char *filename,
867 dav_buffer *pbuf)
868{
869 dav_error *err;
870 apr_size_t len;
871 apr_size_t scanlen;
872 char *scan;
873 const char *scanend;
874 char *dirpath = apr_pstrdup(p, filename);
875 char *fname = strrchr(dirpath, '/');
876 int dirty = 0;
877
878 if (fname != NULL)
879 *fname++ = '\0';
880 else
881 fname = dirpath;
882 len = strlen(fname) + 1;
883
884 if ((err = dav_fs_load_locknull_list(p, dirpath, pbuf)) != NULL) {
885 /* ### add a higher level description? */
886 return err;
887 }
888
889 for (scan = pbuf->buf, scanend = scan + pbuf->cur_len;
890 scan < scanend;
891 scan += scanlen) {
892 scanlen = strlen(scan) + 1;
893 if (len == scanlen && memcmp(fname, scan, scanlen) == 0) {
894 pbuf->cur_len -= scanlen;
895 memmove(scan, scan + scanlen, scanend - (scan + scanlen));
896 dirty = 1;
897 break;
898 }
899 }
900
901 if (dirty) {
902 if ((err = dav_fs_save_locknull_list(p, dirpath, pbuf)) != NULL) {
903 /* ### add a higher level description? */
904 return err;
905 }
906 }
907
908 return NULL;
909}
910
911/* Note: used by dav_fs_repos.c */
912dav_error * dav_fs_get_locknull_members(

Callers 3

dav_fs_load_lock_recordFunction · 0.85
dav_fs_remove_lockFunction · 0.85

Calls 2

Tested by

no test coverage detected