Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 104260 Details for
Bug 93471
jpilot-0.99.7: KeyRing categories do not track changes
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
keyring categories patch
jpilot-0.99.9-keyring-cats.patch (text/plain), 2.44 KB, created by
Craig Lawson
on 2006-12-17 21:05:20 UTC
(
hide
)
Description:
keyring categories patch
Filename:
MIME Type:
Creator:
Craig Lawson
Created:
2006-12-17 21:05:20 UTC
Size:
2.44 KB
patch
obsolete
>--- KeyRing/keyring.c.original 2006-06-24 21:49:51.000000000 -0700 >+++ KeyRing/keyring.c 2006-12-17 20:02:08.000000000 -0800 >@@ -160,6 +160,8 @@ > > static int keyring_find(int unique_id); > >+int plugin_unpack_cai_from_ai(struct CategoryAppInfo *cai, unsigned char *ai_raw, int len); >+ > /****************************** Main Code *************************************/ > static int pack_KeyRing(struct KeyRing *kr, unsigned char *buf, int buf_size, > int *wrote_size) >@@ -1348,17 +1350,12 @@ > > /* This gets the application specific data out of the database for us. > * We still need to write a function to unpack it from its blob form. */ >+ >+ memset (&ai, 0, sizeof (ai)); > > jp_get_app_info("Keys-Gtkr", &buf, &buf_size); > >- /* This call should work, but the appinfo is too small, so we do it */ >- /* Keyring is not using a legal category app info structure */ >- /* unpack_CategoryAppInfo(&ai, buf, buf_size+4); */ >- >- /* I'm going to be lazy and only get the names, since that's all I use */ >- for (i=0; i<NUM_KEYRING_CAT_ITEMS; i++) { >- memcpy(&ai.name[i][0], buf+i*16+2, 16); >- } >+ plugin_unpack_cai_from_ai (&ai, buf, buf_size); > > free(buf); > >@@ -2238,3 +2235,62 @@ > > return EXIT_SUCCESS; > } >+ >+/* Stolen from pilot-link and modified slightly. */ >+int plugin_unpack_cai_from_ai(struct CategoryAppInfo *ai, unsigned char *record, int len) >+{ >+ int i, rec; >+ >+ if (len < 2 + 16 * 16 + 16 + 2) >+ return 0; >+ rec = get_short(record); >+ for (i = 0; i < 16; i++) { >+ if (rec & (1 << i)) >+ ai->renamed[i] = 1; >+ else >+ ai->renamed[i] = 0; >+ } >+ record += 2; >+ for (i = 0; i < 16; i++) { >+ memcpy(ai->name[i], record, 16); >+ record += 16; >+ } >+ memcpy(ai->ID, record, 16); >+ record += 16; >+ ai->lastUniqueID = get_byte(record); >+ record += 2; >+ >+ return 2 + 16 * 16 + 16 + 2; >+} >+ >+int plugin_pack_cai_into_ai(struct CategoryAppInfo *ai, unsigned char *record, int len) >+{ >+ int i, rec; >+ >+ unsigned char *start = record; >+ >+ if (!record) { >+ return 2 + 16 * 16 + 16 + 2; >+ } >+ if (len < (2 + 16 * 16 + 16 + 2)) >+ return 0; /* not enough room */ >+ rec = 0; >+ for (i = 0; i < 16; i++) { >+ if (ai->renamed[i]) >+ rec |= (1 << i); >+ } >+ set_short(record, rec); >+ record += 2; >+ for (i = 0; i < 16; i++) { >+ memcpy(record, ai->name[i], 16); >+ record += 16; >+ } >+ memcpy(record, ai->ID, 16); >+ record += 16; >+ set_byte(record, ai->lastUniqueID); >+ record++; >+ set_byte(record, 0); /* gapfill */ >+ record++; >+ >+ return (record - start); >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 93471
: 104260