1 /* 2 * This software is Copyright (c) 2016 Denis Burykin 3 * [denis_burykin yahoo com], [denis-burykin2014 yandex ru] 4 * and it is hereby released to the general public under the following terms: 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted. 7 * 8 */ 9 #include <stdio.h> 10 #include <stdlib.h> 11 #include <string.h> 12 13 #include "pkt_comm.h" 14 #include "word_gen.h" 15 16 17 struct word_gen word_gen_words_pass_by = { 18 0, { } // 0 ranges 19 }; 20 21 pkt_word_gen_new(struct word_gen * word_gen)22struct pkt *pkt_word_gen_new(struct word_gen *word_gen) 23 { 24 int max_len = sizeof(struct word_gen) + 5; 25 char *data = malloc(max_len); 26 27 if (!data) { 28 pkt_error("pkt_word_gen_new(): unable to allocate %d bytes\n", 29 max_len); 30 return NULL; 31 } 32 int offset = 0; 33 34 int i; 35 data[offset++] = word_gen->num_ranges; 36 for (i = 0; i < word_gen->num_ranges; i++) { 37 struct word_gen_char_range *range = &word_gen->ranges[i]; 38 data[offset++] = range->num_chars; 39 data[offset++] = 0; 40 memcpy(data + offset, range->chars, range->num_chars); 41 offset += range->num_chars; 42 } 43 44 *((uint32_t*)(data + offset)) = 0; 45 offset += 4; 46 47 // word_gen_v2 doesn't have this stuff 48 //data[offset++] = word_gen->num_words; 49 //for (i = 0; i < word_gen->num_words; i++) { 50 // data[offset++] = word_gen->word_insert_pos[i]; 51 //} 52 53 data[offset++] = 0xBB; 54 55 struct pkt *pkt = pkt_new(PKT_TYPE_WORD_GEN, data, offset); 56 57 return pkt; 58 } 59