home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 August / PCO0897.ISO / filesbbs / os2 / plnk065.arj / PLNK065.ZIP / pilot-link.0.6.5 / libsock / memo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-23  |  1.9 KB  |  81 lines

  1. /* memo.c:  Translate Pilot memopad data formats
  2.  *
  3.  * Copyright (c) 1996, Kenneth Albanowski
  4.  *
  5.  * This is free software, licensed under the GNU Public License V2.
  6.  * See the file COPYING for details.
  7.  */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12. #include "pi-source.h"
  13. #include "pi-socket.h"
  14. #include "pi-dlp.h"
  15. #include "pi-memo.h"
  16.  
  17. void free_Memo(struct Memo * a) {
  18.   if(a->text)
  19.     free(a->text);
  20. }
  21.  
  22. void unpack_Memo(struct Memo * a, unsigned char * buffer, int len) {
  23.   a->text = strdup((char*)buffer);
  24. }
  25.  
  26. void pack_Memo(struct Memo * a, unsigned char * buffer, int * len) {
  27.   if(a->text) {
  28.     strcpy((char*)buffer,a->text);
  29.     *len = strlen(a->text)+1;
  30.   } else {
  31.     buffer[0] = 0;
  32.     *len = 1;
  33.   }
  34. }
  35.                   
  36. void unpack_MemoAppInfo(struct MemoAppInfo * ai, unsigned char * record, int len) {
  37.   int i;
  38.   ai->renamedcategories = get_short(record);
  39.   record+=2;
  40.   for(i=0;i<16;i++) {
  41.     memcpy(ai->CategoryName[i], record, 16);
  42.     record += 16;
  43.   }
  44.   memcpy(ai->CategoryID, record, 16);
  45.   record += 16;
  46.   ai->lastUniqueID = get_byte(record);
  47.   record += 4;
  48.   if (len >= 282) {
  49.     record += 2;
  50.     ai->sortOrder = get_byte(record);
  51.   } else {
  52.     ai->sortOrder = 0;
  53.   }
  54. }
  55.  
  56. void pack_MemoAppInfo(struct MemoAppInfo * ai, unsigned char * record, int * len) {
  57.   int i;
  58.   unsigned char * start = record;
  59.   set_short(record, ai->renamedcategories);
  60.   record += 2;
  61.   for(i=0;i<16;i++) {
  62.     memcpy(record, ai->CategoryName[i], 16);
  63.     record += 16;
  64.   }
  65.   memcpy(record, ai->CategoryID, 16);
  66.   record += 16;
  67.   set_byte(record, ai->lastUniqueID);
  68.   record ++;
  69.   set_byte(record, 0); /* gapfil */
  70.   set_short(record+1, 0); /* gapfil */
  71.   record += 3;
  72.   set_short(record, 0); /* gapfil new for 2.0 */
  73.   record += 2;
  74.   set_byte(record, ai->sortOrder); /* new for 2.0 */
  75.   record++;
  76.   set_byte(record, 0); /* gapfil new for 2.0 */
  77.   record++;
  78.   
  79.   *len = (record-start);
  80. }
  81.