1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <string.h>
4
5 #include "tool.h"
6 #include "id3.h"
7
GetId3v1(char * titre,char * artiste,char * radioName)8 char *GetId3v1(char *titre, char *artiste, char *radioName)
9 {
10 char *chunk;
11 char *relativePointer;
12 int padding = 0;
13
14 chunk = (char *)memory_allocation(128);
15
16 /* id3v1 tag */
17 strncat(chunk, "TAG", 3);
18
19 /* Title */
20 relativePointer = chunk + 3; /* 3 octets */
21 if (titre) {
22 padding = (30 - strlen(titre));
23 if (padding < 0)
24 {
25 snprintf(relativePointer+3, 31, "%s", titre);
26 } else {
27 snprintf(relativePointer, 128-3, "%s", titre);
28 memset(relativePointer + (30-padding), 0, padding);
29 }
30 } else {
31 memset(relativePointer, 0, 30);
32 }
33
34 /* Artist */
35 relativePointer = relativePointer + 30; /* 33 octets */
36 if (artiste) {
37 padding = (30 - strlen(artiste));
38 if (padding < 0) {
39 snprintf(relativePointer, 31, "%s", artiste);
40 } else {
41 snprintf(relativePointer, 128-33, "%s", artiste);
42 memset(relativePointer + (30 - padding), 0, padding);
43 }
44 } else {
45 memset(relativePointer, 0, 30);
46 }
47
48 /* Album (on met l'url de la radio ...) */
49 relativePointer = relativePointer + 30; /* 63 octets */
50 if (radioName != NULL) {
51 padding = (30 - strlen(radioName));
52 if (padding < 0) {
53 snprintf(relativePointer, 31, "%s", radioName);
54 } else {
55 snprintf(relativePointer, 128-63, "%s", radioName);
56 memset(relativePointer + (30-padding), 0, padding);
57 }
58 } else {
59 memset(relativePointer, 0, 30);
60 }
61
62 /* Year */
63 relativePointer = relativePointer + 30; /* 93 octets */
64 memset(relativePointer, 0, 4);
65
66 /* Comment */
67 relativePointer = relativePointer + 4; /* 97 octets */
68 snprintf(relativePointer, 31, "by cPige http://ed.zehome.com/");
69 /* Ouah la chance, �a rentre! */
70
71 /* genre */
72 relativePointer = relativePointer + 30; /* 127 octets */
73 memset(relativePointer, 1, 1);
74
75 /* 128 bytes ! We won :) */
76 return chunk;
77 }
78