reindent-20030715
[openafs.git] / src / JAVA / libjafs / User.c
index 7a32bb6..a581948 100644 (file)
@@ -85,108 +85,102 @@ extern jfieldID group_cachedInfoField;
  * uid     the user id to assign to the user (0 to have one 
  *                automatically assigned)
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_create
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jusername, 
-   jstring jpassword, jint uid )
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_create(JNIEnv * env, jclass cls, jint cellHandle,
+                                 jstring jusername, jstring jpassword,
+                                 jint uid)
 {
-  afs_status_t ast;
-  char *username;
-  char *password;
-  kas_identity_p who = (kas_identity_p) malloc( sizeof(kas_identity_t) );
-  
-  if ( !who ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  // convert java strings
-  if ( jusername != NULL ) {
-    username = getNativeString(env, jusername);
-    if ( username == NULL ) {
-      free( who );
-      throwAFSException( env, JAFSADMNOMEM );
-      return;    
-    }
-  } else {
-    free( who );
-    throwAFSException( env, JAFSNULLUSER );
-    return;
-  }
-
-  if ( jpassword != NULL ) {
-    password = getNativeString(env, jpassword);
-    if ( password == NULL ) {
-      free( who );
-      free( username );
-      throwAFSException( env, JAFSADMNOMEM );
-      return;    
-    }
-  } else {
-    free( who );
-    free( username );
-    throwAFSException( env, JAFSNULLPASS );
-    return;
-  }
-
-  // make sure the name is within the allowed bounds
-  if ( strlen( username ) > KAS_MAX_NAME_LEN ) {
-    free( who );
-    free( username );
-    free( password );
-    throwAFSException( env, ADMPTSUSERNAMETOOLONG  );
-    return;
-  }
-
-  // make sure name doesn't have ":" in it
-  if ( strchr( username, ':' ) != (int) NULL ) {
-    free( who );
-    free( username );
-    free( password );
-    throwAFSException( env, PRBADNAM );
-    return;
-  }
-
-  // make sure the id isn't negative
-  if ( uid < 0 ) {
-    free( who );
-    free( username );
-    free( password );
-    // use the "bad arg" error code even though it's an ID exception.  
-    // There isn't a bad user ID error code
-    throwAFSException( env, PRBADARG );
-    return;
-  }
-
-  if ( username != NULL ) {
-    internal_makeKasIdentity( username, who );
-  }
-
-  // create the kas entry
-  if (!kas_PrincipalCreate( (void *) cellHandle, NULL, who, 
-                           password, &ast ) ) {
-    free( who );
-    free( username );
-    free( password );
-    throwAFSException( env, ast );
-    return;
-  } 
-
-  // create the pts entry - if there's an error, make sure to delete 
-  // the kas entry 
-  if ( !pts_UserCreate( (void *) cellHandle, username, (int *) &uid, &ast ) ) {
-    afs_status_t ast_kd;
-    kas_PrincipalDelete( (void *) cellHandle, NULL, who, &ast_kd );
-    free( who );
-    free( username );
-    free( password );
-    throwAFSException( env, ast );
-    return;
-  }
-
-  free( who );
-  free( username );
-  free( password );
+    afs_status_t ast;
+    char *username;
+    char *password;
+    kas_identity_p who = (kas_identity_p) malloc(sizeof(kas_identity_t));
+
+    if (!who) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
+    // convert java strings
+    if (jusername != NULL) {
+       username = getNativeString(env, jusername);
+       if (username == NULL) {
+           free(who);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       free(who);
+       throwAFSException(env, JAFSNULLUSER);
+       return;
+    }
+
+    if (jpassword != NULL) {
+       password = getNativeString(env, jpassword);
+       if (password == NULL) {
+           free(who);
+           free(username);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       free(who);
+       free(username);
+       throwAFSException(env, JAFSNULLPASS);
+       return;
+    }
+
+    // make sure the name is within the allowed bounds
+    if (strlen(username) > KAS_MAX_NAME_LEN) {
+       free(who);
+       free(username);
+       free(password);
+       throwAFSException(env, ADMPTSUSERNAMETOOLONG);
+       return;
+    }
+    // make sure name doesn't have ":" in it
+    if (strchr(username, ':') != (int)NULL) {
+       free(who);
+       free(username);
+       free(password);
+       throwAFSException(env, PRBADNAM);
+       return;
+    }
+    // make sure the id isn't negative
+    if (uid < 0) {
+       free(who);
+       free(username);
+       free(password);
+       // use the "bad arg" error code even though it's an ID exception.  
+       // There isn't a bad user ID error code
+       throwAFSException(env, PRBADARG);
+       return;
+    }
+
+    if (username != NULL) {
+       internal_makeKasIdentity(username, who);
+    }
+    // create the kas entry
+    if (!kas_PrincipalCreate((void *)cellHandle, NULL, who, password, &ast)) {
+       free(who);
+       free(username);
+       free(password);
+       throwAFSException(env, ast);
+       return;
+    }
+    // create the pts entry - if there's an error, make sure to delete 
+    // the kas entry 
+    if (!pts_UserCreate((void *)cellHandle, username, (int *)&uid, &ast)) {
+       afs_status_t ast_kd;
+       kas_PrincipalDelete((void *)cellHandle, NULL, who, &ast_kd);
+       free(who);
+       free(username);
+       free(password);
+       throwAFSException(env, ast);
+       return;
+    }
+
+    free(who);
+    free(username);
+    free(password);
 }
 
 /**
@@ -199,70 +193,69 @@ Java_org_openafs_jafs_User_create
  * cellHandle    the handle of the cell to which the user belongs
  * jusername      the name of the user to delete
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_delete
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jusername )
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_delete(JNIEnv * env, jclass cls, jint cellHandle,
+                                 jstring jusername)
 {
-  afs_status_t ast;
-  char *username;
-  kas_identity_p who = (kas_identity_p) malloc( sizeof(kas_identity_t) );  
-  int kas;
-  
-  if ( !who ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  if ( jusername != NULL ) {
-    username = getNativeString(env, jusername);
-    if ( username == NULL ) {
-       free( who );
-       throwAFSException( env, JAFSADMNOMEM );
-       return;    
-    }
-  } else {
-    free( who );
-    throwAFSException( env, JAFSNULLUSER );
-    return;
-  }
-
-  // make sure the name is within the allowed bounds
-  if ( strlen( username ) > KAS_MAX_NAME_LEN ) {
-    free( who );
-    free( username );
-    throwAFSException( env, ADMPTSUSERNAMETOOLONG  );
-    return;
-  }
-
-  internal_makeKasIdentity( username, who );
-
-  // delete the kas entry
-  if ( !kas_PrincipalDelete( (void *) cellHandle, NULL, who, &ast ) ) {
-    if ( ast != KANOENT ) {
-      free(who);
-      free( username );
-      throwAFSException( env, ast );
-      return;
+    afs_status_t ast;
+    char *username;
+    kas_identity_p who = (kas_identity_p) malloc(sizeof(kas_identity_t));
+    int kas;
+
+    if (!who) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
+
+    if (jusername != NULL) {
+       username = getNativeString(env, jusername);
+       if (username == NULL) {
+           free(who);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
     } else {
-      kas = FALSE;
+       free(who);
+       throwAFSException(env, JAFSNULLUSER);
+       return;
+    }
+
+    // make sure the name is within the allowed bounds
+    if (strlen(username) > KAS_MAX_NAME_LEN) {
+       free(who);
+       free(username);
+       throwAFSException(env, ADMPTSUSERNAMETOOLONG);
+       return;
     }
-  }
 
-  //delete the pts entry
-  if ( !pts_UserDelete( (void *) cellHandle, username, &ast ) ) {
-    // throw exception if there was no such pts user only if there was 
-    // also no such kas user
-    if ( (ast == ADMPTSFAILEDNAMETRANSLATE && !kas ) || 
-          ast != ADMPTSFAILEDNAMETRANSLATE ) {
-      free( who );
-      free( username );
-      throwAFSException( env, ast );
-      return;
+    internal_makeKasIdentity(username, who);
+
+    // delete the kas entry
+    if (!kas_PrincipalDelete((void *)cellHandle, NULL, who, &ast)) {
+       if (ast != KANOENT) {
+           free(who);
+           free(username);
+           throwAFSException(env, ast);
+           return;
+       } else {
+           kas = FALSE;
+       }
+    }
+    //delete the pts entry
+    if (!pts_UserDelete((void *)cellHandle, username, &ast)) {
+       // throw exception if there was no such pts user only if there was 
+       // also no such kas user
+       if ((ast == ADMPTSFAILEDNAMETRANSLATE && !kas)
+           || ast != ADMPTSFAILEDNAMETRANSLATE) {
+           free(who);
+           free(username);
+           throwAFSException(env, ast);
+           return;
+       }
     }
-  }
 
-  free( who );
-  free( username );
+    free(who);
+    free(username);
 }
 
 /**
@@ -273,52 +266,51 @@ Java_org_openafs_jafs_User_delete
  * cellHandle    the handle of the cell to which the user belongs
  * jusername      the name of the user to unlock
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_unlock
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jusername )
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_unlock(JNIEnv * env, jclass cls, jint cellHandle,
+                                 jstring jusername)
 {
-  afs_status_t ast;
-  char *username;
-  kas_identity_p who = (kas_identity_p) malloc( sizeof(kas_identity_t) );  
-  
-  if ( !who ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  // convert java strings
-  if ( jusername != NULL ) {
-    username = getNativeString(env, jusername);
-    if ( username == NULL ) {
-      free( who );
-       throwAFSException( env, JAFSADMNOMEM );
-       return;    
-    }
-  } else {
-    free( who );
-    throwAFSException( env, JAFSNULLUSER );
-    return;
-  }
-
-  // make sure the name is within the allowed bounds
-  if ( strlen( username ) > KAS_MAX_NAME_LEN ) {
-    free( who );
-    free( username );
-    throwAFSException( env, ADMPTSUSERNAMETOOLONG  );
-    return;
-  }  
-
-  internal_makeKasIdentity( username, who );
-
-  if ( !kas_PrincipalUnlock( (void *) cellHandle, NULL, who, &ast ) ) {
-    free( who );
-    free( username );
-    throwAFSException( env, ast );
-    return;
-  }
-
-  free( who );
-  free( username );
+    afs_status_t ast;
+    char *username;
+    kas_identity_p who = (kas_identity_p) malloc(sizeof(kas_identity_t));
+
+    if (!who) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
+    // convert java strings
+    if (jusername != NULL) {
+       username = getNativeString(env, jusername);
+       if (username == NULL) {
+           free(who);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       free(who);
+       throwAFSException(env, JAFSNULLUSER);
+       return;
+    }
+
+    // make sure the name is within the allowed bounds
+    if (strlen(username) > KAS_MAX_NAME_LEN) {
+       free(who);
+       free(username);
+       throwAFSException(env, ADMPTSUSERNAMETOOLONG);
+       return;
+    }
+
+    internal_makeKasIdentity(username, who);
+
+    if (!kas_PrincipalUnlock((void *)cellHandle, NULL, who, &ast)) {
+       free(who);
+       free(username);
+       throwAFSException(env, ast);
+       return;
+    }
+
+    free(who);
+    free(username);
 }
 
 /**
@@ -330,208 +322,207 @@ Java_org_openafs_jafs_User_unlock
  * name      the name of the user for which to get the info
  * user      the User object to populate with the info
  */
-void getUserInfoChar
-  (JNIEnv *env, int cellHandle, const char *name, jobject user)
+void
+getUserInfoChar(JNIEnv * env, int cellHandle, const char *name, jobject user)
 {
-  jstring jowner;
-  jstring jcreator;
-  jstring jlastModName;
-  jstring jencryptionKey;
-  jboolean pts;
-  jboolean kas;
-  pts_UserEntry_t ptsEntry;
-  afs_status_t ast;
-  kas_identity_p who = (kas_identity_p) malloc( sizeof(kas_identity_t) );
-  kas_principalEntry_t kasEntry;
-  unsigned int lockedUntil;
-
-  if ( !who ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  // make sure the name is within the allowed bounds
-  if ( name != NULL && strlen( name ) > KAS_MAX_NAME_LEN ) {
-    free( who );
-    throwAFSException( env, ADMPTSUSERNAMETOOLONG );
-    return;
-  }
-  
-  if ( name != NULL ) {
-    internal_makeKasIdentity( name, who );
-  }
-
-  // get all the field ids, if you haven't done so already
-  if ( userCls == 0 ) {
-    internal_getUserClass( env, user );
-  }
-
-  // get the pts entry
-  if ( !pts_UserGet( (void *) cellHandle, name, &ptsEntry, &ast ) ) {
-    // if the user has no pts ptsEntry
-    if ( ast == ADMPTSFAILEDNAMETRANSLATE ) {
-       pts = FALSE;    
-    } else {
-      free( who );
-       throwAFSException( env, ast );
+    jstring jowner;
+    jstring jcreator;
+    jstring jlastModName;
+    jstring jencryptionKey;
+    jboolean pts;
+    jboolean kas;
+    pts_UserEntry_t ptsEntry;
+    afs_status_t ast;
+    kas_identity_p who = (kas_identity_p) malloc(sizeof(kas_identity_t));
+    kas_principalEntry_t kasEntry;
+    unsigned int lockedUntil;
+
+    if (!who) {
+       throwAFSException(env, JAFSADMNOMEM);
        return;
     }
-  } else {
-    pts = TRUE;
-  }
-  
-
-  // get the kas entry
-  if ( !kas_PrincipalGet( (void *) cellHandle, NULL, who, &kasEntry, &ast ) ) {
-    // no kas entry
-    if ( ast == KANOENT ) { 
-       if ( !pts ) {
-        free( who );
-        throwAFSException( env, ast );
-        return;
+    // make sure the name is within the allowed bounds
+    if (name != NULL && strlen(name) > KAS_MAX_NAME_LEN) {
+       free(who);
+       throwAFSException(env, ADMPTSUSERNAMETOOLONG);
+       return;
+    }
+
+    if (name != NULL) {
+       internal_makeKasIdentity(name, who);
+    }
+    // get all the field ids, if you haven't done so already
+    if (userCls == 0) {
+       internal_getUserClass(env, user);
+    }
+    // get the pts entry
+    if (!pts_UserGet((void *)cellHandle, name, &ptsEntry, &ast)) {
+       // if the user has no pts ptsEntry
+       if (ast == ADMPTSFAILEDNAMETRANSLATE) {
+           pts = FALSE;
+       } else {
+           free(who);
+           throwAFSException(env, ast);
+           return;
+       }
+    } else {
+       pts = TRUE;
+    }
+
+
+    // get the kas entry
+    if (!kas_PrincipalGet((void *)cellHandle, NULL, who, &kasEntry, &ast)) {
+       // no kas entry
+       if (ast == KANOENT) {
+           if (!pts) {
+               free(who);
+               throwAFSException(env, ast);
+               return;
+           } else {
+               kas = FALSE;
+           }
+           // other
        } else {
-        kas = FALSE;
+           free(who);
+           throwAFSException(env, ast);
+           return;
        }
-      // other
     } else {
-       free( who );
-       throwAFSException( env, ast );
+       kas = TRUE;
+    }
+
+    // get the lock status
+    if (kas
+       && !kas_PrincipalLockStatusGet((void *)cellHandle, NULL, who,
+                                      &lockedUntil, &ast)) {
+       free(who);
+       throwAFSException(env, ast);
        return;
     }
-  } else {
-    kas = TRUE;
-  }
-
-  // get the lock status
-  if ( kas && !kas_PrincipalLockStatusGet( (void *) cellHandle, NULL, who, 
-                                         &lockedUntil, &ast ) ) {
-    free( who );
-    throwAFSException( env, ast );
-    return;
-  }
-
-  (*env)->SetBooleanField(env, user, user_ptsField, pts);
-  (*env)->SetBooleanField(env, user, user_kasField, kas);
-
-  // set the pts fields
-  if ( pts ) {
-      (*env)->SetIntField(env, user, user_nameUidField, ptsEntry.nameUid);
-      (*env)->SetIntField(env, user, user_ownerUidField, ptsEntry.ownerUid);
-      (*env)->SetIntField(env, user, user_creatorUidField, 
-                         ptsEntry.creatorUid);
-      (*env)->SetIntField(env, user, user_groupCreationQuotaField, 
-                         ptsEntry.groupCreationQuota);
-      (*env)->SetIntField(env, user, user_groupMembershipCountField, 
-                         ptsEntry.groupMembershipCount);
-      
-      if ( ptsEntry.listStatus == PTS_USER_OWNER_ACCESS ) {
-         (*env)->SetIntField(env, user, user_listStatusField, 
-                             org_openafs_jafs_User_USER_OWNER_ACCESS);
-      } else {
-         (*env)->SetIntField(env, user, user_listStatusField, 
-                             org_openafs_jafs_User_USER_ANYUSER_ACCESS);
-      }
-      if ( ptsEntry.listGroupsOwned == PTS_USER_OWNER_ACCESS ) {
-         (*env)->SetIntField(env, user, user_listGroupsOwnedField, 
-                             org_openafs_jafs_User_USER_OWNER_ACCESS);
-      } else {
-         (*env)->SetIntField(env, user, user_listGroupsOwnedField, 
-                             org_openafs_jafs_User_USER_ANYUSER_ACCESS);
-      }
-      if ( ptsEntry.listMembership == PTS_USER_OWNER_ACCESS ) {
-         (*env)->SetIntField(env, user, user_listMembershipField, 
-                             org_openafs_jafs_User_USER_OWNER_ACCESS);
-      } else {
-         (*env)->SetIntField(env, user, user_listMembershipField, 
-                             org_openafs_jafs_User_USER_ANYUSER_ACCESS);
-      }
-      
-      jowner = (*env)->NewStringUTF(env, ptsEntry.owner);
-      jcreator =  (*env)->NewStringUTF(env, ptsEntry.creator);
-      
-      (*env)->SetObjectField(env, user, user_ownerField, jowner);
-      (*env)->SetObjectField(env, user, user_creatorField, jcreator);
-
-  }
-
-  // set the kas fields
-  if ( kas ) {
-      char *convertedKey;
-      int i;
-      if ( kasEntry.adminSetting == KAS_ADMIN ) {
-         (*env)->SetIntField(env, user, user_adminSettingField, 
-                             org_openafs_jafs_User_ADMIN);
-      } else {
-         (*env)->SetIntField(env, user, user_adminSettingField, 
-                             org_openafs_jafs_User_NO_ADMIN);
-      }
-      if ( kasEntry.tgsSetting == TGS ) {
-         (*env)->SetIntField(env, user, user_tgsSettingField, 
-                             org_openafs_jafs_User_GRANT_TICKETS);
-      } else {
-         (*env)->SetIntField(env, user, user_tgsSettingField, 
-                             org_openafs_jafs_User_NO_GRANT_TICKETS);
-      }
-      if ( kasEntry.encSetting != NO_ENCRYPT ) {
-         (*env)->SetIntField(env, user, user_encSettingField, 
-                             org_openafs_jafs_User_ENCRYPT);
-      } else {
-         (*env)->SetIntField(env, user, user_encSettingField, 
-                             org_openafs_jafs_User_NO_ENCRYPT);
-      }
-      if ( kasEntry.cpwSetting == CHANGE_PASSWORD ) {
-         (*env)->SetIntField(env, user, user_cpwSettingField, 
-                             org_openafs_jafs_User_CHANGE_PASSWORD);
-      } else {
-         (*env)->SetIntField(env, user, user_cpwSettingField, 
-                             org_openafs_jafs_User_NO_CHANGE_PASSWORD);
-      }
-      if ( kasEntry.rpwSetting == REUSE_PASSWORD ) {
-         (*env)->SetIntField(env, user, user_rpwSettingField, 
-                             org_openafs_jafs_User_REUSE_PASSWORD);
-      } else {
-         (*env)->SetIntField(env, user, user_rpwSettingField, 
-                             org_openafs_jafs_User_NO_REUSE_PASSWORD);
-      }
-      (*env)->SetIntField(env, user, user_userExpirationField, 
-                         kasEntry.userExpiration);
-      (*env)->SetIntField(env, user, user_lastModTimeField, 
-                         kasEntry.lastModTime);
-      (*env)->SetIntField(env, user, user_lastChangePasswordTimeField, 
-                         kasEntry.lastChangePasswordTime);
-      (*env)->SetIntField(env, user, user_maxTicketLifetimeField, 
-                         kasEntry.maxTicketLifetime);
-      (*env)->SetIntField(env, user, user_keyVersionField, 
-                         kasEntry.keyVersion);
-      (*env)->SetLongField(env, user, user_keyCheckSumField, 
-                          (unsigned int) kasEntry.keyCheckSum);
-      (*env)->SetIntField(env, user, user_daysToPasswordExpireField, 
-                         kasEntry.daysToPasswordExpire);
-      (*env)->SetIntField(env, user, user_failLoginCountField, 
-                         kasEntry.failLoginCount);
-      (*env)->SetIntField(env, user, user_lockTimeField, kasEntry.lockTime);
-      (*env)->SetIntField(env, user, user_lockedUntilField, lockedUntil);
-      
-      jlastModName = (*env)->NewStringUTF(env, 
-                                         kasEntry.lastModPrincipal.principal);
-      (*env)->SetObjectField(env, user, user_lastModNameField, jlastModName);
-
-      convertedKey = (char *) malloc( sizeof(char *)*
-                                     (sizeof(kasEntry.key.key)*4+1) );
-      if ( !convertedKey ) {
-        free( who );
-        throwAFSException( env, JAFSADMNOMEM );
-        return;    
-      }
-      for( i = 0; i < sizeof(kasEntry.key.key); i++ ) {
-        sprintf( &(convertedKey[i*4]), "\\%0.3o", kasEntry.key.key[i] );
-      }
-      jencryptionKey =  (*env)->NewStringUTF(env, convertedKey);
-      (*env)->SetObjectField(env, user, user_encryptionKeyField, 
-                             jencryptionKey);
-      free( convertedKey );
-  }
-  free( who );
+
+    (*env)->SetBooleanField(env, user, user_ptsField, pts);
+    (*env)->SetBooleanField(env, user, user_kasField, kas);
+
+    // set the pts fields
+    if (pts) {
+       (*env)->SetIntField(env, user, user_nameUidField, ptsEntry.nameUid);
+       (*env)->SetIntField(env, user, user_ownerUidField, ptsEntry.ownerUid);
+       (*env)->SetIntField(env, user, user_creatorUidField,
+                           ptsEntry.creatorUid);
+       (*env)->SetIntField(env, user, user_groupCreationQuotaField,
+                           ptsEntry.groupCreationQuota);
+       (*env)->SetIntField(env, user, user_groupMembershipCountField,
+                           ptsEntry.groupMembershipCount);
+
+       if (ptsEntry.listStatus == PTS_USER_OWNER_ACCESS) {
+           (*env)->SetIntField(env, user, user_listStatusField,
+                               org_openafs_jafs_User_USER_OWNER_ACCESS);
+       } else {
+           (*env)->SetIntField(env, user, user_listStatusField,
+                               org_openafs_jafs_User_USER_ANYUSER_ACCESS);
+       }
+       if (ptsEntry.listGroupsOwned == PTS_USER_OWNER_ACCESS) {
+           (*env)->SetIntField(env, user, user_listGroupsOwnedField,
+                               org_openafs_jafs_User_USER_OWNER_ACCESS);
+       } else {
+           (*env)->SetIntField(env, user, user_listGroupsOwnedField,
+                               org_openafs_jafs_User_USER_ANYUSER_ACCESS);
+       }
+       if (ptsEntry.listMembership == PTS_USER_OWNER_ACCESS) {
+           (*env)->SetIntField(env, user, user_listMembershipField,
+                               org_openafs_jafs_User_USER_OWNER_ACCESS);
+       } else {
+           (*env)->SetIntField(env, user, user_listMembershipField,
+                               org_openafs_jafs_User_USER_ANYUSER_ACCESS);
+       }
+
+       jowner = (*env)->NewStringUTF(env, ptsEntry.owner);
+       jcreator = (*env)->NewStringUTF(env, ptsEntry.creator);
+
+       (*env)->SetObjectField(env, user, user_ownerField, jowner);
+       (*env)->SetObjectField(env, user, user_creatorField, jcreator);
+
+    }
+    // set the kas fields
+    if (kas) {
+       char *convertedKey;
+       int i;
+       if (kasEntry.adminSetting == KAS_ADMIN) {
+           (*env)->SetIntField(env, user, user_adminSettingField,
+                               org_openafs_jafs_User_ADMIN);
+       } else {
+           (*env)->SetIntField(env, user, user_adminSettingField,
+                               org_openafs_jafs_User_NO_ADMIN);
+       }
+       if (kasEntry.tgsSetting == TGS) {
+           (*env)->SetIntField(env, user, user_tgsSettingField,
+                               org_openafs_jafs_User_GRANT_TICKETS);
+       } else {
+           (*env)->SetIntField(env, user, user_tgsSettingField,
+                               org_openafs_jafs_User_NO_GRANT_TICKETS);
+       }
+       if (kasEntry.encSetting != NO_ENCRYPT) {
+           (*env)->SetIntField(env, user, user_encSettingField,
+                               org_openafs_jafs_User_ENCRYPT);
+       } else {
+           (*env)->SetIntField(env, user, user_encSettingField,
+                               org_openafs_jafs_User_NO_ENCRYPT);
+       }
+       if (kasEntry.cpwSetting == CHANGE_PASSWORD) {
+           (*env)->SetIntField(env, user, user_cpwSettingField,
+                               org_openafs_jafs_User_CHANGE_PASSWORD);
+       } else {
+           (*env)->SetIntField(env, user, user_cpwSettingField,
+                               org_openafs_jafs_User_NO_CHANGE_PASSWORD);
+       }
+       if (kasEntry.rpwSetting == REUSE_PASSWORD) {
+           (*env)->SetIntField(env, user, user_rpwSettingField,
+                               org_openafs_jafs_User_REUSE_PASSWORD);
+       } else {
+           (*env)->SetIntField(env, user, user_rpwSettingField,
+                               org_openafs_jafs_User_NO_REUSE_PASSWORD);
+       }
+       (*env)->SetIntField(env, user, user_userExpirationField,
+                           kasEntry.userExpiration);
+       (*env)->SetIntField(env, user, user_lastModTimeField,
+                           kasEntry.lastModTime);
+       (*env)->SetIntField(env, user, user_lastChangePasswordTimeField,
+                           kasEntry.lastChangePasswordTime);
+       (*env)->SetIntField(env, user, user_maxTicketLifetimeField,
+                           kasEntry.maxTicketLifetime);
+       (*env)->SetIntField(env, user, user_keyVersionField,
+                           kasEntry.keyVersion);
+       (*env)->SetLongField(env, user, user_keyCheckSumField,
+                            (unsigned int)kasEntry.keyCheckSum);
+       (*env)->SetIntField(env, user, user_daysToPasswordExpireField,
+                           kasEntry.daysToPasswordExpire);
+       (*env)->SetIntField(env, user, user_failLoginCountField,
+                           kasEntry.failLoginCount);
+       (*env)->SetIntField(env, user, user_lockTimeField, kasEntry.lockTime);
+       (*env)->SetIntField(env, user, user_lockedUntilField, lockedUntil);
+
+       jlastModName =
+           (*env)->NewStringUTF(env, kasEntry.lastModPrincipal.principal);
+       (*env)->SetObjectField(env, user, user_lastModNameField,
+                              jlastModName);
+
+       convertedKey =
+           (char *)malloc(sizeof(char *) *
+                          (sizeof(kasEntry.key.key) * 4 + 1));
+       if (!convertedKey) {
+           free(who);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+       for (i = 0; i < sizeof(kasEntry.key.key); i++) {
+           sprintf(&(convertedKey[i * 4]), "\\%0.3o", kasEntry.key.key[i]);
+       }
+       jencryptionKey = (*env)->NewStringUTF(env, convertedKey);
+       (*env)->SetObjectField(env, user, user_encryptionKeyField,
+                              jencryptionKey);
+       free(convertedKey);
+    }
+    free(who);
 }
 
 /**
@@ -545,34 +536,34 @@ void getUserInfoChar
  * user     the User object in which to fill in the 
  *                 information
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_getUserInfo
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jname, jobject user)
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_getUserInfo(JNIEnv * env, jclass cls,
+                                      jint cellHandle, jstring jname,
+                                      jobject user)
 {
-  char *name;
-
-  if ( jname != NULL ) {
-    name = getNativeString(env, jname);
-    if ( !name ) {
-       throwAFSException( env, JAFSADMNOMEM );
-       return;    
-    }
-  } else {
-    throwAFSException( env, JAFSNULLUSER );
-    return;  
-  }
-
-  getUserInfoChar( env, cellHandle, name, user );
-  // get class fields if need be
-  if ( userCls == 0 ) {
-    internal_getUserClass( env, user );
-  }
-  
-  // set name in case blank object
-  (*env)->SetObjectField(env, user, user_nameField, jname);
-  
-  free( name );
+    char *name;
+
+    if (jname != NULL) {
+       name = getNativeString(env, jname);
+       if (!name) {
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       throwAFSException(env, JAFSNULLUSER);
+       return;
+    }
+
+    getUserInfoChar(env, cellHandle, name, user);
+
+    // get class fields if need be
+    if (userCls == 0) {
+       internal_getUserClass(env, user);
+    }
+    // set name in case blank object
+    (*env)->SetObjectField(env, user, user_nameField, jname);
+
+    free(name);
 }
 
 /**
@@ -586,151 +577,151 @@ Java_org_openafs_jafs_User_getUserInfo
  * user  the User object containing the desired 
  *                 information
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_setUserInfo
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jname, jobject user )
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_setUserInfo(JNIEnv * env, jclass cls,
+                                      jint cellHandle, jstring jname,
+                                      jobject user)
 {
-  char *name;
-  kas_identity_p who = (kas_identity_p) malloc( sizeof(kas_identity_t) );
-  pts_UserUpdateEntry_t ptsEntry;
-  afs_status_t ast;
-  kas_admin_t isAdmin;
-  kas_tgs_t grantTickets;
-  kas_enc_t canEncrypt;
-  kas_cpw_t canChangePassword;
-  kas_rpw_t passwordReuse;
-  unsigned int expirationDate;
-  unsigned int maxTicketLifetime;
-  unsigned int passwordExpires;
-  unsigned int failedPasswordAttempts;
-  unsigned int failedPasswordLockTime;
-  int kas;
-  int pts;
-
-  if ( !who ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  if ( jname != NULL ) {
-    name = getNativeString(env, jname);
-    if ( name == NULL ) {
-      free( who );
-       throwAFSException( env, JAFSADMNOMEM );
-       return;    
-    }
-  } else {
-    free( who );
-    throwAFSException( env, JAFSNULLUSER );
-    return;  
-  }
-
-  // make sure the name is within the allowed bounds
-  if ( strlen( name ) > KAS_MAX_NAME_LEN ) {
-    free( who );
-    free( name );
-    throwAFSException( env, ADMPTSUSERNAMETOOLONG );
-    return;
-  }
-
-  internal_makeKasIdentity( name, who );
-
-  // get class fields if need be
-  if ( userCls == 0 ) {
-    internal_getUserClass( env, user );
-  }
-
-  kas = (*env)->GetBooleanField(env, user, user_kasField);
-  pts = (*env)->GetBooleanField(env, user, user_ptsField);
-
-  if ( pts ) {
-    // set the pts fields: 
-    ptsEntry.flag = PTS_USER_UPDATE_GROUP_CREATE_QUOTA | 
-       PTS_USER_UPDATE_PERMISSIONS;
-    ptsEntry.groupCreationQuota = 
-       (*env)->GetIntField(env, user, user_groupCreationQuotaField);
-    if ( (*env)->GetIntField(env, user, user_listStatusField) == 
-         org_openafs_jafs_User_USER_OWNER_ACCESS ) {
-      ptsEntry.listStatus = PTS_USER_OWNER_ACCESS;
-    } else {
-      ptsEntry.listStatus = PTS_USER_ANYUSER_ACCESS;
-    }
-    if ( (*env)->GetIntField(env, user, user_listGroupsOwnedField) == 
-         org_openafs_jafs_User_USER_OWNER_ACCESS ) {
-      ptsEntry.listGroupsOwned = PTS_USER_OWNER_ACCESS;
-    } else {
-      ptsEntry.listGroupsOwned = PTS_USER_ANYUSER_ACCESS;
+    char *name;
+    kas_identity_p who = (kas_identity_p) malloc(sizeof(kas_identity_t));
+    pts_UserUpdateEntry_t ptsEntry;
+    afs_status_t ast;
+    kas_admin_t isAdmin;
+    kas_tgs_t grantTickets;
+    kas_enc_t canEncrypt;
+    kas_cpw_t canChangePassword;
+    kas_rpw_t passwordReuse;
+    unsigned int expirationDate;
+    unsigned int maxTicketLifetime;
+    unsigned int passwordExpires;
+    unsigned int failedPasswordAttempts;
+    unsigned int failedPasswordLockTime;
+    int kas;
+    int pts;
+
+    if (!who) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
     }
-    if ( (*env)->GetIntField(env, user, user_listMembershipField) == 
-         org_openafs_jafs_User_USER_OWNER_ACCESS ) {
-      ptsEntry.listMembership = PTS_USER_OWNER_ACCESS;
+
+    if (jname != NULL) {
+       name = getNativeString(env, jname);
+       if (name == NULL) {
+           free(who);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
     } else {
-      ptsEntry.listMembership = PTS_USER_ANYUSER_ACCESS;
-    }
-    if ( !pts_UserModify( (void *) cellHandle, name, &ptsEntry, &ast ) ) {
-      free( who );
-      free( name );
-      throwAFSException( env, ast );
-      return;    
+       free(who);
+       throwAFSException(env, JAFSNULLUSER);
+       return;
     }
-  }
 
-  if ( kas ) {
-    // set the kas fields:
-    if ( (*env)->GetIntField(env, user, user_adminSettingField) == 
-         org_openafs_jafs_User_ADMIN ) {
-      isAdmin = KAS_ADMIN;
-    } else {
-      isAdmin = NO_KAS_ADMIN;
+    // make sure the name is within the allowed bounds
+    if (strlen(name) > KAS_MAX_NAME_LEN) {
+       free(who);
+       free(name);
+       throwAFSException(env, ADMPTSUSERNAMETOOLONG);
+       return;
     }
-    if ( (*env)->GetIntField(env, user, user_tgsSettingField) == 
-         org_openafs_jafs_User_GRANT_TICKETS ) {
-      grantTickets = TGS;
-    } else {
-      grantTickets = NO_TGS;
+
+    internal_makeKasIdentity(name, who);
+
+    // get class fields if need be
+    if (userCls == 0) {
+       internal_getUserClass(env, user);
     }
-    if ( (*env)->GetIntField(env, user, user_encSettingField) == 
-         org_openafs_jafs_User_ENCRYPT ) {
-      canEncrypt = 0;
-    } else {
-      canEncrypt = NO_ENCRYPT;
+
+    kas = (*env)->GetBooleanField(env, user, user_kasField);
+    pts = (*env)->GetBooleanField(env, user, user_ptsField);
+
+    if (pts) {
+       // set the pts fields: 
+       ptsEntry.flag =
+           PTS_USER_UPDATE_GROUP_CREATE_QUOTA | PTS_USER_UPDATE_PERMISSIONS;
+       ptsEntry.groupCreationQuota =
+           (*env)->GetIntField(env, user, user_groupCreationQuotaField);
+       if ((*env)->GetIntField(env, user, user_listStatusField) ==
+           org_openafs_jafs_User_USER_OWNER_ACCESS) {
+           ptsEntry.listStatus = PTS_USER_OWNER_ACCESS;
+       } else {
+           ptsEntry.listStatus = PTS_USER_ANYUSER_ACCESS;
+       }
+       if ((*env)->GetIntField(env, user, user_listGroupsOwnedField) ==
+           org_openafs_jafs_User_USER_OWNER_ACCESS) {
+           ptsEntry.listGroupsOwned = PTS_USER_OWNER_ACCESS;
+       } else {
+           ptsEntry.listGroupsOwned = PTS_USER_ANYUSER_ACCESS;
+       }
+       if ((*env)->GetIntField(env, user, user_listMembershipField) ==
+           org_openafs_jafs_User_USER_OWNER_ACCESS) {
+           ptsEntry.listMembership = PTS_USER_OWNER_ACCESS;
+       } else {
+           ptsEntry.listMembership = PTS_USER_ANYUSER_ACCESS;
+       }
+       if (!pts_UserModify((void *)cellHandle, name, &ptsEntry, &ast)) {
+           free(who);
+           free(name);
+           throwAFSException(env, ast);
+           return;
+       }
     }
-    if ( (*env)->GetIntField(env, user, user_cpwSettingField) == 
-         org_openafs_jafs_User_CHANGE_PASSWORD ) {
-      canChangePassword = CHANGE_PASSWORD;
-    } else {
-      canChangePassword = NO_CHANGE_PASSWORD;
+
+    if (kas) {
+       // set the kas fields:
+       if ((*env)->GetIntField(env, user, user_adminSettingField) ==
+           org_openafs_jafs_User_ADMIN) {
+           isAdmin = KAS_ADMIN;
+       } else {
+           isAdmin = NO_KAS_ADMIN;
+       }
+       if ((*env)->GetIntField(env, user, user_tgsSettingField) ==
+           org_openafs_jafs_User_GRANT_TICKETS) {
+           grantTickets = TGS;
+       } else {
+           grantTickets = NO_TGS;
+       }
+       if ((*env)->GetIntField(env, user, user_encSettingField) ==
+           org_openafs_jafs_User_ENCRYPT) {
+           canEncrypt = 0;
+       } else {
+           canEncrypt = NO_ENCRYPT;
+       }
+       if ((*env)->GetIntField(env, user, user_cpwSettingField) ==
+           org_openafs_jafs_User_CHANGE_PASSWORD) {
+           canChangePassword = CHANGE_PASSWORD;
+       } else {
+           canChangePassword = NO_CHANGE_PASSWORD;
+       }
+       if ((*env)->GetIntField(env, user, user_rpwSettingField) ==
+           org_openafs_jafs_User_REUSE_PASSWORD) {
+           passwordReuse = REUSE_PASSWORD;
+       } else {
+           passwordReuse = NO_REUSE_PASSWORD;
+       }
+       expirationDate =
+           (*env)->GetIntField(env, user, user_userExpirationField);
+       maxTicketLifetime =
+           (*env)->GetIntField(env, user, user_maxTicketLifetimeField);
+       passwordExpires =
+           (*env)->GetIntField(env, user, user_daysToPasswordExpireField);
+       failedPasswordAttempts =
+           (*env)->GetIntField(env, user, user_failLoginCountField);
+       failedPasswordLockTime =
+           (*env)->GetIntField(env, user, user_lockTimeField);
+
+
+       if (!kas_PrincipalFieldsSet
+           ((void *)cellHandle, NULL, who, &isAdmin, &grantTickets,
+            &canEncrypt, &canChangePassword, &expirationDate,
+            &maxTicketLifetime, &passwordExpires, &passwordReuse,
+            &failedPasswordAttempts, &failedPasswordLockTime, &ast)) {
+           throwAFSException(env, ast);
+       }
     }
-    if ( (*env)->GetIntField(env, user, user_rpwSettingField) == 
-         org_openafs_jafs_User_REUSE_PASSWORD ) {
-      passwordReuse = REUSE_PASSWORD;
-    } else {
-      passwordReuse = NO_REUSE_PASSWORD;
-    }
-    expirationDate = (*env)->GetIntField(env, user, 
-                                         user_userExpirationField);
-    maxTicketLifetime = (*env)->GetIntField(env, user, 
-                                            user_maxTicketLifetimeField);
-    passwordExpires = (*env)->GetIntField(env, user, 
-                                          user_daysToPasswordExpireField);
-    failedPasswordAttempts = (*env)->GetIntField(env, user, 
-                                                 user_failLoginCountField);
-    failedPasswordLockTime =  (*env)->GetIntField(env, user, 
-                                                  user_lockTimeField);
-      
-
-    if ( !kas_PrincipalFieldsSet( (void *) cellHandle, NULL, who, &isAdmin, 
-                                 &grantTickets, &canEncrypt, 
-                                 &canChangePassword, &expirationDate, 
-                                 &maxTicketLifetime, &passwordExpires, 
-                                 &passwordReuse, &failedPasswordAttempts, 
-                                 &failedPasswordLockTime, &ast ) ) {
-      throwAFSException( env, ast );
-    }
-  }      
-
-  free( who );
-  free( name );
+
+    free(who);
+    free(name);
 }
 
 /**
@@ -743,158 +734,169 @@ Java_org_openafs_jafs_User_setUserInfo
  * joldName     the name of the user to rename
  * jnewName     the new name for the user
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_rename
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring joldName, jstring jnewName)
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_rename(JNIEnv * env, jclass cls, jint cellHandle,
+                                 jstring joldName, jstring jnewName)
 {
-  char *oldName;
-  char *newName;
-  kas_identity_p whoOld = (kas_identity_p) malloc( sizeof(kas_identity_t) );
-  kas_identity_p whoNew = (kas_identity_p) malloc( sizeof(kas_identity_t) );
-  kas_principalEntry_t kasEntry;
-  pts_UserEntry_t ptsEntry;
-  afs_status_t ast;
-  int kas;
-
-  if ( !whoOld || !whoNew ) {
-    if ( whoOld ) {
-       free( whoOld );
-    }
-    if ( whoNew ) {
-       free( whoNew );
-    } 
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  if ( joldName != NULL ) {
-    oldName = getNativeString(env, joldName);
-    if ( oldName == NULL ) {
-      free( whoOld );
-      free( whoNew );
-      throwAFSException( env, JAFSADMNOMEM );
-      return;    
-    }
-  } else {
-    oldName = NULL;
-  }
-  if ( jnewName != NULL ) {
-    newName = getNativeString(env, jnewName);
-    if ( newName == NULL ) {
-      free( whoOld );
-      free( whoNew );
-      if ( oldName != NULL ) free ( oldName );
-      throwAFSException( env, JAFSADMNOMEM );
-      return;    
-    }
-  } else {
-    newName = NULL;
-  }
-
-  // make sure the names are within the allowed bounds
-  if ( (oldName != NULL && strlen( oldName ) > KAS_MAX_NAME_LEN) ||
-      (newName != NULL && strlen( newName ) > KAS_MAX_NAME_LEN) )
-  {
-    free( whoOld );
-    free( whoNew );
-    if ( oldName != NULL ) free( oldName );
-    if ( newName != NULL ) free( newName );
-    throwAFSException( env, ADMPTSUSERNAMETOOLONG );
-    return;
-  }
-    
-  if ( oldName != NULL ) {
-    internal_makeKasIdentity( oldName, whoOld );
-  }
-  if ( newName != NULL ) {
-    internal_makeKasIdentity( newName, whoNew );
-  }
-
-  // retrieve the old kas info
-  if ( !kas_PrincipalGet( (void *) cellHandle, NULL, whoOld, 
-                         &kasEntry, &ast ) ) {
-    if ( ast != KANOENT ) {
-      free( whoOld );
-      free( whoNew );
-      if ( oldName != NULL ) free( oldName );
-      if ( newName != NULL ) free( newName );
-      throwAFSException( env, ast );
-      return;
+    char *oldName;
+    char *newName;
+    kas_identity_p whoOld = (kas_identity_p) malloc(sizeof(kas_identity_t));
+    kas_identity_p whoNew = (kas_identity_p) malloc(sizeof(kas_identity_t));
+    kas_principalEntry_t kasEntry;
+    pts_UserEntry_t ptsEntry;
+    afs_status_t ast;
+    int kas;
+
+    if (!whoOld || !whoNew) {
+       if (whoOld) {
+           free(whoOld);
+       }
+       if (whoNew) {
+           free(whoNew);
+       }
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
+
+    if (joldName != NULL) {
+       oldName = getNativeString(env, joldName);
+       if (oldName == NULL) {
+           free(whoOld);
+           free(whoNew);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
     } else {
-      kas = FALSE;
-    }
-  } else {
-    kas = TRUE;
-  }   
-       
-  if ( kas ) {
-    // create a new kas entry
-    // temporarily set the password equal to the new name
-    if (!kas_PrincipalCreate( (void *) cellHandle, NULL, whoNew, 
-                              newName, &ast ) ) {          
-      free( whoOld );
-      free( whoNew );
-      if ( oldName != NULL ) free( oldName );
-      if ( newName != NULL ) free( newName );
-      throwAFSException( env, ast );
-      return;
-    } 
-
-    // set the password 
-    ast = 0;
-    // For some reason kas_PrincipalKeySet doesn't set the return code 
-    // correctly.  It always returns 0.
-    // So instead of checking the return code, we see if there's an 
-    // error in the status variable.
-    kas_PrincipalKeySet( (void *) cellHandle, NULL, whoNew, 0, 
-                         &(kasEntry.key), &ast );
-    if ( ast ) {
-      afs_status_t ast_kd;
-      kas_PrincipalDelete( (void *) cellHandle, NULL, whoNew, &ast_kd );
-      free( whoOld );
-      free( whoNew );
-      if ( oldName != NULL ) free( oldName );
-      if ( newName != NULL ) free( newName );
-      throwAFSException( env, ast );
-      return;
-    }
-  }
-
-  // rename the pts entry
-  if ( !pts_UserRename( (void *) cellHandle, oldName, newName, &ast ) ) {
-    // throw exception if there was no such pts user only if 
-    // there was also no such kas user
-    if ( (ast == ADMPTSFAILEDNAMETRANSLATE && !kas ) || 
-        ast != ADMPTSFAILEDNAMETRANSLATE ) {
-      afs_status_t ast_kd;
-      if ( kas ) {
-        kas_PrincipalDelete( (void *) cellHandle, NULL, whoNew, &ast_kd );
-      }
-      free( whoOld );
-      free( whoNew );
-      if ( oldName != NULL ) free( oldName );
-      if ( newName != NULL ) free( newName );
-      throwAFSException( env, ast );
-      return;
-    }
-  }
-
-  if ( kas ) {
-    // delete the old kas entry
-    if ( !kas_PrincipalDelete( (void *) cellHandle, NULL, whoOld, &ast ) ) {
-      free( whoOld );
-      free( whoNew );
-      if ( oldName != NULL ) free( oldName );
-      if ( newName != NULL ) free( newName );
-      throwAFSException( env, ast );
-      return;
-    }
-  }    
-
-  free( whoOld );
-  free( whoNew );
-  if ( oldName != NULL ) free( oldName );
-  if ( newName != NULL ) free( newName );
+       oldName = NULL;
+    }
+    if (jnewName != NULL) {
+       newName = getNativeString(env, jnewName);
+       if (newName == NULL) {
+           free(whoOld);
+           free(whoNew);
+           if (oldName != NULL)
+               free(oldName);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       newName = NULL;
+    }
+
+    // make sure the names are within the allowed bounds
+    if ((oldName != NULL && strlen(oldName) > KAS_MAX_NAME_LEN)
+       || (newName != NULL && strlen(newName) > KAS_MAX_NAME_LEN)) {
+       free(whoOld);
+       free(whoNew);
+       if (oldName != NULL)
+           free(oldName);
+       if (newName != NULL)
+           free(newName);
+       throwAFSException(env, ADMPTSUSERNAMETOOLONG);
+       return;
+    }
+
+    if (oldName != NULL) {
+       internal_makeKasIdentity(oldName, whoOld);
+    }
+    if (newName != NULL) {
+       internal_makeKasIdentity(newName, whoNew);
+    }
+    // retrieve the old kas info
+    if (!kas_PrincipalGet((void *)cellHandle, NULL, whoOld, &kasEntry, &ast)) {
+       if (ast != KANOENT) {
+           free(whoOld);
+           free(whoNew);
+           if (oldName != NULL)
+               free(oldName);
+           if (newName != NULL)
+               free(newName);
+           throwAFSException(env, ast);
+           return;
+       } else {
+           kas = FALSE;
+       }
+    } else {
+       kas = TRUE;
+    }
+
+    if (kas) {
+       // create a new kas entry
+       // temporarily set the password equal to the new name
+       if (!kas_PrincipalCreate
+           ((void *)cellHandle, NULL, whoNew, newName, &ast)) {
+           free(whoOld);
+           free(whoNew);
+           if (oldName != NULL)
+               free(oldName);
+           if (newName != NULL)
+               free(newName);
+           throwAFSException(env, ast);
+           return;
+       }
+       // set the password 
+       ast = 0;
+       // For some reason kas_PrincipalKeySet doesn't set the return code 
+       // correctly.  It always returns 0.
+       // So instead of checking the return code, we see if there's an 
+       // error in the status variable.
+       kas_PrincipalKeySet((void *)cellHandle, NULL, whoNew, 0,
+                           &(kasEntry.key), &ast);
+       if (ast) {
+           afs_status_t ast_kd;
+           kas_PrincipalDelete((void *)cellHandle, NULL, whoNew, &ast_kd);
+           free(whoOld);
+           free(whoNew);
+           if (oldName != NULL)
+               free(oldName);
+           if (newName != NULL)
+               free(newName);
+           throwAFSException(env, ast);
+           return;
+       }
+    }
+    // rename the pts entry
+    if (!pts_UserRename((void *)cellHandle, oldName, newName, &ast)) {
+       // throw exception if there was no such pts user only if 
+       // there was also no such kas user
+       if ((ast == ADMPTSFAILEDNAMETRANSLATE && !kas)
+           || ast != ADMPTSFAILEDNAMETRANSLATE) {
+           afs_status_t ast_kd;
+           if (kas) {
+               kas_PrincipalDelete((void *)cellHandle, NULL, whoNew,
+                                   &ast_kd);
+           }
+           free(whoOld);
+           free(whoNew);
+           if (oldName != NULL)
+               free(oldName);
+           if (newName != NULL)
+               free(newName);
+           throwAFSException(env, ast);
+           return;
+       }
+    }
+
+    if (kas) {
+       // delete the old kas entry
+       if (!kas_PrincipalDelete((void *)cellHandle, NULL, whoOld, &ast)) {
+           free(whoOld);
+           free(whoNew);
+           if (oldName != NULL)
+               free(oldName);
+           if (newName != NULL)
+               free(newName);
+           throwAFSException(env, ast);
+           return;
+       }
+    }
+
+    free(whoOld);
+    free(whoNew);
+    if (oldName != NULL)
+       free(oldName);
+    if (newName != NULL)
+       free(newName);
 }
 
 /**
@@ -906,106 +908,106 @@ Java_org_openafs_jafs_User_rename
  * jusername     the name of the user for which to set the password
  * jnewPassword     the new password for the user
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_setPassword
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jusername,
-   jstring jnewPassword)
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_setPassword(JNIEnv * env, jclass cls,
+                                      jint cellHandle, jstring jusername,
+                                      jstring jnewPassword)
 {
-  afs_status_t ast;
-  char *cellName;
-  char *username;
-  char *newPassword;
-  kas_encryptionKey_p newKey = 
-    (kas_encryptionKey_p) malloc( sizeof(kas_encryptionKey_t) );
-  kas_identity_p who = (kas_identity_p) malloc( sizeof(kas_identity_t) );
-
-  if ( !who || !newKey ) {
-    if ( who ) {
-      free( who );
-    }
-    if ( newKey ) {
-      free( newKey );
-    }
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  if ( jusername != NULL ) {
-    username = getNativeString(env, jusername);
-    if ( username == NULL ) {
-      free( who );
-      free( newKey );
-      throwAFSException( env, JAFSADMNOMEM );
-      return;    
-    }
-  } else {
-    free( who );
-    free( newKey );
-    throwAFSException( env, JAFSNULLUSER );
-    return;    
-  }
-
-  if ( jnewPassword != NULL ) {
-    newPassword = getNativeString(env, jnewPassword);
-    if ( newPassword == NULL ) {
-      free( who );
-      free( newKey );
-      free( username );
-      throwAFSException( env, JAFSADMNOMEM );
-      return;    
-    }
-  } else {
-    free( who );
-    free( newKey );
-    free( username );
-    throwAFSException( env, JAFSNULLPASS );
-    return;    
-  }
-
-  // make sure the name is within the allowed bounds
-  if ( strlen( username ) > KAS_MAX_NAME_LEN ) {
-    free( who );
-    free( newKey );
-    free( username );
-    free( newPassword );
-    throwAFSException( env, ADMPTSUSERNAMETOOLONG );
-    return;
-  }
-
-  if ( !afsclient_CellNameGet( (void *) cellHandle, &cellName, &ast ) ) {
-    free( who );
-    free( newKey );
-    free( username );
-    free( newPassword );
-    throwAFSException( env, ast );
-    return;
-  }
-  
-  if ( !kas_StringToKey( cellName, newPassword, newKey, &ast ) ) {
-    free( who );
-    free( newKey );
-    free( username );
-    free( newPassword );
-    throwAFSException( env, ast );
-    return;
-  }
-
-  internal_makeKasIdentity( username, who );
-
-  ast = 0;
-  // For some reason kas_PrincipalKeySet doesn't set the return code correctly.
-  //  It always returns 0.
-  // So instead of checking the return code, we see if there's an error 
-  // in the status variable.
-  kas_PrincipalKeySet( (void *) cellHandle, NULL, who, 0, newKey, &ast );
-  if ( ast ) {
-    throwAFSException( env, ast );
-  }
-
-  free( who );
-  free( newKey );
-  free( username );
-  free( newPassword );
+    afs_status_t ast;
+    char *cellName;
+    char *username;
+    char *newPassword;
+    kas_encryptionKey_p newKey =
+       (kas_encryptionKey_p) malloc(sizeof(kas_encryptionKey_t));
+    kas_identity_p who = (kas_identity_p) malloc(sizeof(kas_identity_t));
+
+    if (!who || !newKey) {
+       if (who) {
+           free(who);
+       }
+       if (newKey) {
+           free(newKey);
+       }
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
+
+    if (jusername != NULL) {
+       username = getNativeString(env, jusername);
+       if (username == NULL) {
+           free(who);
+           free(newKey);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       free(who);
+       free(newKey);
+       throwAFSException(env, JAFSNULLUSER);
+       return;
+    }
+
+    if (jnewPassword != NULL) {
+       newPassword = getNativeString(env, jnewPassword);
+       if (newPassword == NULL) {
+           free(who);
+           free(newKey);
+           free(username);
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       free(who);
+       free(newKey);
+       free(username);
+       throwAFSException(env, JAFSNULLPASS);
+       return;
+    }
+
+    // make sure the name is within the allowed bounds
+    if (strlen(username) > KAS_MAX_NAME_LEN) {
+       free(who);
+       free(newKey);
+       free(username);
+       free(newPassword);
+       throwAFSException(env, ADMPTSUSERNAMETOOLONG);
+       return;
+    }
+
+    if (!afsclient_CellNameGet((void *)cellHandle, &cellName, &ast)) {
+       free(who);
+       free(newKey);
+       free(username);
+       free(newPassword);
+       throwAFSException(env, ast);
+       return;
+    }
+
+    if (!kas_StringToKey(cellName, newPassword, newKey, &ast)) {
+       free(who);
+       free(newKey);
+       free(username);
+       free(newPassword);
+       throwAFSException(env, ast);
+       return;
+    }
+
+    internal_makeKasIdentity(username, who);
+
+    ast = 0;
+    // For some reason kas_PrincipalKeySet doesn't set the return code correctly.
+    //  It always returns 0.
+    // So instead of checking the return code, we see if there's an error 
+    // in the status variable.
+    kas_PrincipalKeySet((void *)cellHandle, NULL, who, 0, newKey, &ast);
+    if (ast) {
+       throwAFSException(env, ast);
+    }
+
+    free(who);
+    free(newKey);
+    free(username);
+    free(newPassword);
 }
 
 /**
@@ -1019,33 +1021,33 @@ Java_org_openafs_jafs_User_setPassword
  * jname          the name of the user for which to get the groups
  * returns an iteration ID
  */
-JNIEXPORT jint JNICALL 
-Java_org_openafs_jafs_User_getUserGroupsBegin
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jname)
+JNIEXPORT jint JNICALL
+Java_org_openafs_jafs_User_getUserGroupsBegin(JNIEnv * env, jclass cls,
+                                             jint cellHandle, jstring jname)
 {
-  char *name;
-  afs_status_t ast;
-  void *iterationId;
-
-  if ( jname != NULL ) {
-    name = getNativeString(env, jname);
-    if ( name == NULL ) {
-      throwAFSException( env, JAFSADMNOMEM );
-      return;    
+    char *name;
+    afs_status_t ast;
+    void *iterationId;
+
+    if (jname != NULL) {
+       name = getNativeString(env, jname);
+       if (name == NULL) {
+           throwAFSException(env, JAFSADMNOMEM);
+           return;
+       }
+    } else {
+       throwAFSException(env, JAFSNULLUSER);
+       return;
     }
-  } else {
-    throwAFSException( env, JAFSNULLUSER );
-    return;  
-  }
 
-  if ( !pts_UserMemberListBegin( (void *) cellHandle, name, &iterationId, 
-                                &ast ) ) {
-    throwAFSException( env, ast );
-  }
+    if (!pts_UserMemberListBegin
+       ((void *)cellHandle, name, &iterationId, &ast)) {
+       throwAFSException(env, ast);
+    }
 
-  free( name );
+    free(name);
 
-  return (jint) iterationId;
+    return (jint) iterationId;
 }
 
 /**
@@ -1057,32 +1059,32 @@ Java_org_openafs_jafs_User_getUserGroupsBegin
  * iterationId   the iteration ID of this iteration
  * returns the name of the next group
  */
-JNIEXPORT jstring JNICALL 
-Java_org_openafs_jafs_User_getUserGroupsNextString
-  (JNIEnv *env, jclass cls, jint iterationId)
+JNIEXPORT jstring JNICALL
+Java_org_openafs_jafs_User_getUserGroupsNextString(JNIEnv * env, jclass cls,
+                                                  jint iterationId)
 {
-  afs_status_t ast;
-  char *groupName = (char *) malloc( sizeof(char)*PTS_MAX_NAME_LEN);
-  jstring jgroup;
-
-  if ( !groupName ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  if ( !pts_UserMemberListNext( (void *) iterationId, groupName, &ast ) ) {
-    free( groupName );
-    if ( ast == ADMITERATORDONE ) {
-      return NULL;
-    } else {
-      throwAFSException( env, ast );
-      return;
-    }
-  }
-  
-  jgroup = (*env)->NewStringUTF(env, groupName);
-  free( groupName );
-  return jgroup;
+    afs_status_t ast;
+    char *groupName = (char *)malloc(sizeof(char) * PTS_MAX_NAME_LEN);
+    jstring jgroup;
+
+    if (!groupName) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
+
+    if (!pts_UserMemberListNext((void *)iterationId, groupName, &ast)) {
+       free(groupName);
+       if (ast == ADMITERATORDONE) {
+           return NULL;
+       } else {
+           throwAFSException(env, ast);
+           return;
+       }
+    }
+
+    jgroup = (*env)->NewStringUTF(env, groupName);
+    free(groupName);
+    return jgroup;
 }
 
 /**
@@ -1097,45 +1099,46 @@ Java_org_openafs_jafs_User_getUserGroupsNextString
  *                   next group
  * returns 0 if there are no more users, != 0 otherwise
  */
-JNIEXPORT jint JNICALL 
-Java_org_openafs_jafs_User_getUserGroupsNext
-  (JNIEnv *env, jclass cls, jint cellHandle, jint iterationId,
-   jobject jgroupObject)
+JNIEXPORT jint JNICALL
+Java_org_openafs_jafs_User_getUserGroupsNext(JNIEnv * env, jclass cls,
+                                            jint cellHandle,
+                                            jint iterationId,
+                                            jobject jgroupObject)
 {
-  afs_status_t ast;
-  char *groupName;
-  jstring jgroup;
+    afs_status_t ast;
+    char *groupName;
+    jstring jgroup;
 
-  groupName = (char *) malloc( sizeof(char)*PTS_MAX_NAME_LEN);
+    groupName = (char *)malloc(sizeof(char) * PTS_MAX_NAME_LEN);
 
-  if ( !groupName ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
+    if (!groupName) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
 
-  if ( !pts_UserMemberListNext( (void *) iterationId, groupName, &ast ) ) {
-    free( groupName );
-    if ( ast == ADMITERATORDONE ) {
-      return 0;
-    } else {
-      throwAFSException( env, ast );
-      return 0;
+    if (!pts_UserMemberListNext((void *)iterationId, groupName, &ast)) {
+       free(groupName);
+       if (ast == ADMITERATORDONE) {
+           return 0;
+       } else {
+           throwAFSException(env, ast);
+           return 0;
+       }
     }
-  }
 
-  jgroup = (*env)->NewStringUTF(env, groupName);
+    jgroup = (*env)->NewStringUTF(env, groupName);
 
-  if ( groupCls == 0 ) {
-    internal_getGroupClass( env, jgroupObject );
-  }
+    if (groupCls == 0) {
+       internal_getGroupClass(env, jgroupObject);
+    }
 
-  (*env)->SetObjectField(env, jgroupObject, group_nameField, jgroup);
+    (*env)->SetObjectField(env, jgroupObject, group_nameField, jgroup);
 
-  getGroupInfoChar( env, (void *) cellHandle, groupName, jgroupObject );
-  (*env)->SetBooleanField( env, jgroupObject, group_cachedInfoField, TRUE );
+    getGroupInfoChar(env, (void *)cellHandle, groupName, jgroupObject);
+    (*env)->SetBooleanField(env, jgroupObject, group_cachedInfoField, TRUE);
 
-  free( groupName );
-  return 1;
+    free(groupName);
+    return 1;
 
 }
 
@@ -1146,16 +1149,16 @@ Java_org_openafs_jafs_User_getUserGroupsNext
  * cls      the current Java class
  * iterationId   the iteration ID of this iteration
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_getUserGroupsDone
-  (JNIEnv *env, jclass cls, jint iterationId)
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_getUserGroupsDone(JNIEnv * env, jclass cls,
+                                            jint iterationId)
 {
-  afs_status_t ast;
+    afs_status_t ast;
 
-  if ( !pts_UserMemberListDone( (void *) iterationId, &ast ) ) {
-    throwAFSException( env, ast );
-    return;
-  }
+    if (!pts_UserMemberListDone((void *)iterationId, &ast)) {
+       throwAFSException(env, ast);
+       return;
+    }
 }
 
 /**
@@ -1167,38 +1170,38 @@ Java_org_openafs_jafs_User_getUserGroupsDone
  * jname          the name of the user for which to get the groups
  * returns total number of groups owned by the user
  */
-JNIEXPORT jint JNICALL 
-Java_org_openafs_jafs_User_getGroupsOwnedCount
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jname)
+JNIEXPORT jint JNICALL
+Java_org_openafs_jafs_User_getGroupsOwnedCount(JNIEnv * env, jclass cls,
+                                              jint cellHandle, jstring jname)
 {
-  afs_status_t ast;
-  void *iterationId;
-  char *groupName;
-  int i = 0;
+    afs_status_t ast;
+    void *iterationId;
+    char *groupName;
+    int i = 0;
 
-  iterationId = 
-    (void *) Java_org_openafs_jafs_User_getGroupsOwnedBegin( env, cls, 
-                                                               cellHandle, 
-                                                               jname );
+    iterationId =
+       (void *)Java_org_openafs_jafs_User_getGroupsOwnedBegin(env, cls,
+                                                              cellHandle,
+                                                              jname);
 
-  groupName = (char *) malloc( sizeof(char)*PTS_MAX_NAME_LEN);
+    groupName = (char *)malloc(sizeof(char) * PTS_MAX_NAME_LEN);
 
-  if ( !groupName ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return -1;    
-  }
+    if (!groupName) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return -1;
+    }
 
-  while ( pts_OwnedGroupListNext( (void *) iterationId, groupName, &ast ) ) 
-    i++;
+    while (pts_OwnedGroupListNext((void *)iterationId, groupName, &ast))
+       i++;
 
-  free( groupName );  
+    free(groupName);
 
-  if ( ast != ADMITERATORDONE ) {
-    throwAFSException( env, ast );
-    return -1;
-  }
+    if (ast != ADMITERATORDONE) {
+       throwAFSException(env, ast);
+       return -1;
+    }
 
-  return i;
+    return i;
 }
 
 /**
@@ -1212,33 +1215,33 @@ Java_org_openafs_jafs_User_getGroupsOwnedCount
  * jname  the name of the user or group for which to get the groups
  * returns an iteration ID
  */
-JNIEXPORT jint JNICALL 
-Java_org_openafs_jafs_User_getGroupsOwnedBegin
-  (JNIEnv *env, jclass cls, jint cellHandle, jstring jname)
+JNIEXPORT jint JNICALL
+Java_org_openafs_jafs_User_getGroupsOwnedBegin(JNIEnv * env, jclass cls,
+                                              jint cellHandle, jstring jname)
 {
-  char *name;
-  afs_status_t ast;
-  void *iterationId;
-
-  if ( jname != NULL ) {
-    name = getNativeString(env, jname);
-    if ( name == NULL ) {
-      throwAFSException( env, JAFSADMNOMEM );
-      return -1;
+    char *name;
+    afs_status_t ast;
+    void *iterationId;
+
+    if (jname != NULL) {
+       name = getNativeString(env, jname);
+       if (name == NULL) {
+           throwAFSException(env, JAFSADMNOMEM);
+           return -1;
+       }
+    } else {
+       throwAFSException(env, JAFSNULLUSER);
+       return -1;
     }
-  } else {
-    throwAFSException( env, JAFSNULLUSER );
-    return -1;
-  }
 
-  if ( !pts_OwnedGroupListBegin( (void *) cellHandle, name, 
-                                &iterationId, &ast ) ) {
-    throwAFSException( env, ast );
-  }
+    if (!pts_OwnedGroupListBegin
+       ((void *)cellHandle, name, &iterationId, &ast)) {
+       throwAFSException(env, ast);
+    }
 
-  free( name );
+    free(name);
 
-  return (jint) iterationId;
+    return (jint) iterationId;
 }
 
 /**
@@ -1250,32 +1253,32 @@ Java_org_openafs_jafs_User_getGroupsOwnedBegin
  * iterationId   the iteration ID of this iteration
  * returns the name of the next group
  */
-JNIEXPORT jstring JNICALL 
-Java_org_openafs_jafs_User_getGroupsOwnedNextString
-  (JNIEnv *env, jclass cls, jint iterationId)
+JNIEXPORT jstring JNICALL
+Java_org_openafs_jafs_User_getGroupsOwnedNextString(JNIEnv * env, jclass cls,
+                                                   jint iterationId)
 {
-  afs_status_t ast;
-  char *groupName = (char *) malloc( sizeof(char)*PTS_MAX_NAME_LEN);
-  jstring jgroup;
-
-  if ( !groupName ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return;    
-  }
-
-  if ( !pts_OwnedGroupListNext( (void *) iterationId, groupName, &ast ) ) {
-    free( groupName );
-    if ( ast == ADMITERATORDONE ) {
-      return NULL;
-    } else {
-      throwAFSException( env, ast );
-      return NULL;
+    afs_status_t ast;
+    char *groupName = (char *)malloc(sizeof(char) * PTS_MAX_NAME_LEN);
+    jstring jgroup;
+
+    if (!groupName) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return;
+    }
+
+    if (!pts_OwnedGroupListNext((void *)iterationId, groupName, &ast)) {
+       free(groupName);
+       if (ast == ADMITERATORDONE) {
+           return NULL;
+       } else {
+           throwAFSException(env, ast);
+           return NULL;
+       }
     }
-  }
-  
-  jgroup = (*env)->NewStringUTF(env, groupName);
-  free( groupName );
-  return jgroup;
+
+    jgroup = (*env)->NewStringUTF(env, groupName);
+    free(groupName);
+    return jgroup;
 
 }
 
@@ -1291,45 +1294,46 @@ Java_org_openafs_jafs_User_getGroupsOwnedNextString
  *                   next group
  * returns 0 if there are no more users, != 0 otherwise
  */
-JNIEXPORT jint JNICALL 
-Java_org_openafs_jafs_User_getGroupsOwnedNext
-  (JNIEnv *env, jclass cls, jint cellHandle, jint iterationId, 
-   jobject jgroupObject)
+JNIEXPORT jint JNICALL
+Java_org_openafs_jafs_User_getGroupsOwnedNext(JNIEnv * env, jclass cls,
+                                             jint cellHandle,
+                                             jint iterationId,
+                                             jobject jgroupObject)
 {
-  afs_status_t ast;
-  char *groupName;
-  jstring jgroup;
+    afs_status_t ast;
+    char *groupName;
+    jstring jgroup;
 
-  groupName = (char *) malloc( sizeof(char)*PTS_MAX_NAME_LEN);
+    groupName = (char *)malloc(sizeof(char) * PTS_MAX_NAME_LEN);
 
-  if ( !groupName ) {
-    throwAFSException( env, JAFSADMNOMEM );
-    return 0;    
-  }
+    if (!groupName) {
+       throwAFSException(env, JAFSADMNOMEM);
+       return 0;
+    }
 
-  if ( !pts_OwnedGroupListNext( (void *) iterationId, groupName, &ast ) ) {
-    free( groupName );
-    if ( ast == ADMITERATORDONE ) {
-      return 0;
-    } else {
-      throwAFSException( env, ast );
-      return 0;
+    if (!pts_OwnedGroupListNext((void *)iterationId, groupName, &ast)) {
+       free(groupName);
+       if (ast == ADMITERATORDONE) {
+           return 0;
+       } else {
+           throwAFSException(env, ast);
+           return 0;
+       }
     }
-  }
 
-  jgroup = (*env)->NewStringUTF(env, groupName);
+    jgroup = (*env)->NewStringUTF(env, groupName);
 
-  if ( groupCls == 0 ) {
-    internal_getGroupClass( env, jgroupObject );
-  }
+    if (groupCls == 0) {
+       internal_getGroupClass(env, jgroupObject);
+    }
 
-  (*env)->SetObjectField(env, jgroupObject, group_nameField, jgroup);
+    (*env)->SetObjectField(env, jgroupObject, group_nameField, jgroup);
 
-  getGroupInfoChar( env, (void *) cellHandle, groupName, jgroupObject );
-  (*env)->SetBooleanField( env, jgroupObject, group_cachedInfoField, TRUE );
+    getGroupInfoChar(env, (void *)cellHandle, groupName, jgroupObject);
+    (*env)->SetBooleanField(env, jgroupObject, group_cachedInfoField, TRUE);
 
-  free( groupName );
-  return 1;
+    free(groupName);
+    return 1;
 
 }
 
@@ -1340,25 +1344,24 @@ Java_org_openafs_jafs_User_getGroupsOwnedNext
  * cls      the current Java class
  * iterationId   the iteration ID of this iteration
  */
-JNIEXPORT void JNICALL 
-Java_org_openafs_jafs_User_getGroupsOwnedDone
-  (JNIEnv *env, jclass cls, jint iterationId)
+JNIEXPORT void JNICALL
+Java_org_openafs_jafs_User_getGroupsOwnedDone(JNIEnv * env, jclass cls,
+                                             jint iterationId)
 {
-  afs_status_t ast;
+    afs_status_t ast;
 
-  if ( !pts_OwnedGroupListDone( (void *) iterationId, &ast ) ) {
-    throwAFSException( env, ast );
-    return;
-  }
+    if (!pts_OwnedGroupListDone((void *)iterationId, &ast)) {
+       throwAFSException(env, ast);
+       return;
+    }
 }
 
 // reclaim global memory being used by this portion
 JNIEXPORT void JNICALL
-Java_org_openafs_jafs_User_reclaimUserMemory
-  (JNIEnv *env, jclass cls)
+Java_org_openafs_jafs_User_reclaimUserMemory(JNIEnv * env, jclass cls)
 {
-  if ( userCls ) {
-    (*env)->DeleteGlobalRef(env, userCls);
-    userCls = 0;
-  }
+    if (userCls) {
+       (*env)->DeleteGlobalRef(env, userCls);
+       userCls = 0;
+    }
 }