Add k_{put,get}_int.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4099 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -40,6 +40,30 @@ | ||||
|  | ||||
| RCSID("$Id$"); | ||||
|  | ||||
| /* This is a bit XXX, but used quite many places */ | ||||
|  | ||||
| size_t | ||||
| k_put_int(void *buffer, unsiged long value, size_t size) | ||||
| { | ||||
|     unsiged char *p = buffer; | ||||
|     for (i = size - 1; i >= 0; i--) { | ||||
| 	p[i] = value & 0xff; | ||||
| 	value >>= 8; | ||||
|     } | ||||
|     return size; | ||||
| } | ||||
|  | ||||
| size_t | ||||
| k_get_int(void *buffer, unsiged long *value, size_t size) | ||||
| { | ||||
|     unsiged char *p = buffer; | ||||
|     unsigned long v = 0; | ||||
|     for (i = 0; i < size; i++) | ||||
| 	v = (v << 8) + p[i]; | ||||
|     *value = v; | ||||
|     return size; | ||||
| } | ||||
|  | ||||
| krb5_error_code | ||||
| krb5_storage_free(krb5_storage *sp) | ||||
| { | ||||
| @@ -70,58 +94,63 @@ krb5_storage_to_data(krb5_storage *sp, krb5_data *data) | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| krb5_error_code | ||||
| krb5_store_int32(krb5_storage *sp, | ||||
| 		 int32_t value) | ||||
| static krb5_error_code | ||||
| krb5_store_int(krb5_storage *sp, | ||||
| 	       int32_t value, | ||||
| 	       size_t len) | ||||
| { | ||||
|     int ret; | ||||
|     unsigned char v[4]; | ||||
|  | ||||
|     value = htonl(value); | ||||
|     ret = sp->store(sp, &value, sizeof(value)); | ||||
|     if (ret != sizeof(value)) | ||||
|     k_put_int(v, value, len); | ||||
|     ret = sp->store(sp, v, len); | ||||
|     if (ret != len) | ||||
| 	return (ret<0)?errno:KRB5_CC_END; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| krb5_error_code | ||||
| krb5_store_int32(krb5_storage *sp, | ||||
| 		 int32_t value) | ||||
| { | ||||
|     return krb5_store_int(sp, value, 4); | ||||
| } | ||||
|  | ||||
| static krb5_error_code | ||||
| krb5_ret_int(krb5_storage *sp, | ||||
| 	     int32_t *value, | ||||
| 	     size_t len) | ||||
| { | ||||
|     int ret; | ||||
|     unsigned char v[4]; | ||||
|     unsigned long w; | ||||
|     ret = sp->fetch(sp, v, len); | ||||
|     if(ret != len) | ||||
| 	return (ret<0)?errno:KRB5_CC_END; | ||||
|     k_get_int(v, &w, len); | ||||
|     *value = w; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static krb5_error_code | ||||
| krb5_ret_int32(krb5_storage *sp, | ||||
| 	       int32_t *value) | ||||
| { | ||||
|     int32_t v; | ||||
|     int ret; | ||||
|     ret = sp->fetch(sp, &v, sizeof(v)); | ||||
|     if(ret != sizeof(v)) | ||||
| 	return (ret<0)?errno:KRB5_CC_END; | ||||
|  | ||||
|     *value = ntohl(v); | ||||
|     return 0; | ||||
|     return krb5_ret_int(sp, value, 4); | ||||
| } | ||||
|  | ||||
| krb5_error_code | ||||
| krb5_store_int16(krb5_storage *sp, | ||||
| 		 int16_t value) | ||||
| { | ||||
|     int ret; | ||||
|  | ||||
|     value = htons(value); | ||||
|     ret = sp->store(sp, &value, sizeof(value)); | ||||
|     if (ret != sizeof(value)) | ||||
| 	return (ret<0)?errno:KRB5_CC_END; | ||||
|     return 0; | ||||
|     return krb5_store_int(sp, value, 2); | ||||
| } | ||||
|  | ||||
| krb5_error_code | ||||
| krb5_ret_int16(krb5_storage *sp, | ||||
| 	       int16_t *value) | ||||
| { | ||||
|     int16_t v; | ||||
|     int ret; | ||||
|     ret = sp->fetch(sp, &v, sizeof(v)); | ||||
|     if(ret != sizeof(v)) | ||||
| 	return (ret<0)?errno:KRB5_CC_END; /* XXX */ | ||||
|    | ||||
|     *value = ntohs(v); | ||||
|     return 0; | ||||
|     return krb5_ret_int(sp, value, 2); | ||||
| } | ||||
|  | ||||
| krb5_error_code | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Johan Danielsson
					Johan Danielsson