Login | Register
My pages Projects Community openCollabNet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Catacomb] Catacomb 0.9.0 problems



Dear catacomb developers!

I and my co-workers created "wrapper" library over neon WebDAV library.
This library defines API which are similar to UNIX syscall. This has also
APIs for DASL,Delta-V and acl capability.

While testing this library,I found some problems. Did you already fixed
them?

1st Problem: CheckIN/Out does not work well. I can not access (get) checked
in resources.
 I guess this problem is simple coding error in dbms_get_property(defined in
dbms.c)
 and dbms_create_vr (defined in dbms.c).diffs of this part are:
diff dbms.c original/dbms.c
260c259
< /*    r->isexternal = dbms_get_int(q, 13);  Deleted */
---
>     r->isexternal = dbms_get_int(q, 13);
263d261
<        r->isexternal = dbms_get_int(q, 13); /* Modified */
505c503
<           set istext=1, textcontent=load_file(?) \
---
>           set istext=2, bincontent=load_file(?) \
507d504
<          /* set istext=2, bincontent=load_file(?) \ */
2300c2297

 2300c2297
<                       "\" \""
---
>                       "'' "

2nd Problem: boolean operation (and,or....) should have 2 condition element.
For examples.
  <AND>
       < condition1  >
       < condition2   >
       < condition3    >
  </AND>
should be accepted (according to DTD), but search operation will be done
with
 (condition1 & condition2), not (condition1 & condition2 & condition2)
If I want to do search with (condition1 & condition2 & condition2),
 I should generate xml like:

  <AND>
        <condition1    >
         <AND>
              <condition2      >
              <condition3    >
         </AND>
  </AND>

I did not fix this yet.

3rd Problem Multiple "orderby" conditions fails
  I guess this problem came from implementation of parse_orderby ( in
search.c).
To avoid this problem, I hacked this code like:
int parse_orderby(request_rec * r, search_ctx * sctx,
    apr_xml_elem * orderby_elem)
{
......
    int  counter = 0;

    TRACE();

    /* iterate through <D:order> elements */
    for (cur_elem = orderby_elem->first_child;
  cur_elem; cur_elem = cur_elem->next) {
 counter ++;

.............

 /* FIXME: We will support dead props orderby later */
 if (is_dead_prop(cur_elem->first_child->first_child)){
     counter --;
     continue;
 }

 if( counter == 1 ){
 orderby = apr_pstrcat(r->pool, orderby,
         cur_elem->first_child->first_child->name, NULL);
 }else{
 orderby = apr_pstrcat(r->pool, orderby,",",
         cur_elem->first_child->first_child->name, NULL);
 }

This change is dirty but works well.

Best Regads.

---
Toru Sakon ( sakon-tooru@sei.co.jp)
Sumitomo Electric Information System
Internet Technology Development Group