|
Lines 47-52
Link Here
|
| 47 |
#include <subversion-1/svn_ra.h> |
47 |
#include <subversion-1/svn_ra.h> |
| 48 |
#include <subversion-1/svn_time.h> |
48 |
#include <subversion-1/svn_time.h> |
| 49 |
#include <subversion-1/svn_cmdline.h> |
49 |
#include <subversion-1/svn_cmdline.h> |
|
|
50 |
#include <subversion-1/svn_version.h> |
| 50 |
|
51 |
|
| 51 |
#include <kmimetype.h> |
52 |
#include <kmimetype.h> |
| 52 |
#include <tqfile.h> |
53 |
#include <tqfile.h> |
|
Lines 110-119
static svn_error_t *write_to_string(void *baton, const char *data, apr_size_t *l
Link Here
|
| 110 |
return SVN_NO_ERROR; |
111 |
return SVN_NO_ERROR; |
| 111 |
} |
112 |
} |
| 112 |
|
113 |
|
| 113 |
static int |
114 |
#if (SVN_VER_MAJOR == 1 && SVN_VER_MINOR <= 8) |
| 114 |
compare_items_as_paths (const svn_sort__item_t*a, const svn_sort__item_t*b) { |
115 |
typedef svn_sort__item_t svn_sort_item_type; |
| 115 |
return svn_path_compare_paths ((const char *)a->key, (const char *)b->key); |
116 |
#else |
|
|
117 |
// Taken from subversion 1.8.10 source code and modified where needed |
| 118 |
|
| 119 |
// Same as svn_sort__item_t |
| 120 |
typedef struct svn_sort_item_type { |
| 121 |
const void *key; // pointer to the key |
| 122 |
apr_ssize_t klen; // size of the key |
| 123 |
void *value; // pointer to the value |
| 124 |
} svn_sort_item_type; |
| 125 |
|
| 126 |
apr_array_header_t* svn_sort__hash(apr_hash_t *ht, |
| 127 |
int (*comparison_func)(const svn_sort__item_t*, const svn_sort__item_t*), apr_pool_t *pool) |
| 128 |
{ |
| 129 |
apr_hash_index_t *hi; |
| 130 |
apr_array_header_t *ary; |
| 131 |
svn_boolean_t sorted; |
| 132 |
svn_sort_item_type *prev_item; |
| 133 |
|
| 134 |
/* allocate an array with enough elements to hold all the keys. */ |
| 135 |
ary = apr_array_make(pool, apr_hash_count(ht), sizeof(svn_sort_item_type)); |
| 136 |
|
| 137 |
/* loop over hash table and push all keys into the array */ |
| 138 |
sorted = TRUE; |
| 139 |
prev_item = NULL; |
| 140 |
for (hi = apr_hash_first(pool, ht); hi; hi = apr_hash_next(hi)) |
| 141 |
{ |
| 142 |
svn_sort_item_type *item = (svn_sort_item_type*)apr_array_push(ary); |
| 143 |
apr_hash_this(hi, &item->key, &item->klen, &item->value); |
| 144 |
|
| 145 |
if (prev_item == NULL) |
| 146 |
{ |
| 147 |
prev_item = item; |
| 148 |
continue; |
| 149 |
} |
| 150 |
|
| 151 |
if (sorted) |
| 152 |
{ |
| 153 |
sorted = (comparison_func((svn_sort__item_t*)prev_item, (svn_sort__item_t*)item) < 0); |
| 154 |
prev_item = item; |
| 155 |
} |
| 156 |
} |
| 157 |
|
| 158 |
/* quicksort the array if it isn't already sorted. */ |
| 159 |
if (!sorted) |
| 160 |
{ |
| 161 |
qsort(ary->elts, ary->nelts, ary->elt_size, |
| 162 |
(int (*)(const void*, const void*))comparison_func); |
| 163 |
} |
| 164 |
|
| 165 |
return ary; |
| 116 |
} |
166 |
} |
|
|
167 |
#endif |
| 117 |
|
168 |
|
| 118 |
tdeio_svnProtocol::tdeio_svnProtocol(const TQCString &pool_socket, const TQCString &app_socket) |
169 |
tdeio_svnProtocol::tdeio_svnProtocol(const TQCString &pool_socket, const TQCString &app_socket) |
| 119 |
: SlaveBase("tdeio_svn", pool_socket, app_socket) { |
170 |
: SlaveBase("tdeio_svn", pool_socket, app_socket) { |
|
Lines 461-476
void tdeio_svnProtocol::listDir(const KURL& url){
Link Here
|
| 461 |
apr_array_header_t *array; |
512 |
apr_array_header_t *array; |
| 462 |
int i; |
513 |
int i; |
| 463 |
|
514 |
|
| 464 |
array = svn_sort__hash (dirents, compare_items_as_paths, subpool); |
515 |
array = svn_sort__hash (dirents, svn_sort_compare_items_as_paths, subpool); |
| 465 |
|
516 |
|
| 466 |
UDSEntry entry; |
517 |
UDSEntry entry; |
| 467 |
for (i = 0; i < array->nelts; ++i) { |
518 |
for (i = 0; i < array->nelts; ++i) { |
| 468 |
entry.clear(); |
519 |
entry.clear(); |
| 469 |
const char *utf8_entryname, *native_entryname; |
520 |
const char *utf8_entryname, *native_entryname; |
| 470 |
svn_dirent_t *dirent; |
521 |
svn_dirent_t *dirent; |
| 471 |
svn_sort__item_t *item; |
522 |
svn_sort_item_type *item; |
| 472 |
|
523 |
|
| 473 |
item = &APR_ARRAY_IDX (array, i, svn_sort__item_t); |
524 |
item = &APR_ARRAY_IDX (array, i, svn_sort_item_type); |
| 474 |
|
525 |
|
| 475 |
utf8_entryname = (const char*)item->key; |
526 |
utf8_entryname = (const char*)item->key; |
| 476 |
|
527 |
|
|
Lines 2071-2077
void tdeio_svnProtocol::notify(void *baton, const char *path, svn_wc_notify_acti
Link Here
|
| 2071 |
tdeio_svnProtocol *p = ( tdeio_svnProtocol* )nb->master; |
2122 |
tdeio_svnProtocol *p = ( tdeio_svnProtocol* )nb->master; |
| 2072 |
if (!p) kdDebug(9036) << " Null Pointer at Line " << __LINE__ << endl; |
2123 |
if (!p) kdDebug(9036) << " Null Pointer at Line " << __LINE__ << endl; |
| 2073 |
|
2124 |
|
| 2074 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "path" , TQString::fromUtf8( path )); |
2125 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "path" , TQString::fromUtf8( path )); |
| 2075 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "action", TQString::number( action )); |
2126 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "action", TQString::number( action )); |
| 2076 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "kind", TQString::number( kind )); |
2127 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "kind", TQString::number( kind )); |
| 2077 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "mime_t", TQString::fromUtf8( mime_type )); |
2128 |
p->setMetaData(TQString::number( p->counter() ).rightJustify( 10,'0' )+ "mime_t", TQString::fromUtf8( mime_type )); |