]> arthur.barton.de Git - netatalk.git/commitdiff
Merge master
authorFrank Lahm <franklahm@googlemail.com>
Wed, 24 Nov 2010 18:12:56 +0000 (19:12 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Wed, 24 Nov 2010 18:12:56 +0000 (19:12 +0100)
1  2 
libatalk/adouble/ad_attr.c

index 8efdf6cf25aef3facc85a289dab20530bf52af91,8b3a32041325a5d405cc114fc1208eba38aa5456..484961eeeb22597330a395504858bd36da24d4d3
@@@ -60,8 -70,15 +60,8 @@@ int ad_setattr(const struct adouble *ad
      if (ad->ad_adflags & ADFLAGS_DIR)
          attr &= ~(ATTRBIT_MULTIUSER | ATTRBIT_NOWRITE | ATTRBIT_NOCOPY);
  
 -    if (ad->ad_version == AD_VERSION1) {
 -        if (ad_getentryoff(ad, ADEID_FILEI)) {
 -            memcpy(ad_entry(ad, ADEID_FILEI) + FILEIOFF_ATTR, &attr,
 -                   sizeof(attr));
 -        }
 -    }
 -#if AD_VERSION == AD_VERSION2
 -    else if (ad->ad_version == AD_VERSION2) {
 +    if (ad->ad_version == AD_VERSION2) {
-         if (ad_getentryoff(ad, ADEID_AFPFILEI)) {
+         if (ad_getentryoff(ad, ADEID_AFPFILEI) && ad_getentryoff(ad, ADEID_FINDERI)) {
              memcpy(ad_entry(ad, ADEID_AFPFILEI) + AFPFILEIOFF_ATTR, &attr, sizeof(attr));
              
              /* Now set opaque flags in FinderInfo too */
              /* See above comment in ad_getattr() */
              if (attr & htons(ATTRBIT_MULTIUSER)) {
                  if ( ! (ad->ad_adflags & ADFLAGS_DIR) )
-                     *fflags |= htons(FINDERINFO_ISHARED);
+                     fflags |= htons(FINDERINFO_ISHARED);
              } else
-                     *fflags &= htons(~FINDERINFO_ISHARED);
+                     fflags &= htons(~FINDERINFO_ISHARED);
+             memcpy(ad_entry(ad, ADEID_FINDERI) + FINDERINFO_FRFLAGOFF, &fflags, 2);
          }
      }
 -#endif
 -    else
 -        return -1;
  
      return 0;
  }