FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_MakeNewRecName.c
Go to the documentation of this file.
1#include <string.h>
2#include <stdlib.h>
3#include "libFireBird.h"
4
5char *HDD_MakeNewRecName(const char *fname, word sequence, char *NewRecName, int NewRecNameSize)
6{
8
9 char try[FBLIB_DIR_SIZE], *Slash;
10 size_t len;
11 char *p;
12 int j;
13 char c1, c2;
14
15 if(NewRecName && NewRecNameSize)
16 {
17 memset(NewRecName, 0, NewRecNameSize);
18 memset(try, 0, sizeof(try));
19
20 Slash = strrchr(fname, '/');
21 if(Slash)
22 {
23 int i;
24
25 i = (dword)Slash - (dword)fname + 1;
26
27 if(i >= NewRecNameSize)
28 {
29 //Not enough space in NewRecName
30 TRACEEXIT();
31 return NewRecName;
32 }
33 strncpy(NewRecName, fname, i);
34 strncpy(try, Slash + 1, sizeof(try));
35 }
36 else
37 {
38 strncpy(try, fname, sizeof(try));
39 }
40
41 len = strlen(try);
42
43 if(!(p = strrchr(try, '.'))) p = try + len;
44 if((j = MAX_FILE_NAME_SIZE - len - 3) < 0)
45 {
46 strcpy(p + j, p);
47 p += j;
48 }
49
50 memmove(p + 3, p, strlen(p) + 1);
51
52 if(sequence)
53 {
54 c1 = sequence / 10 % 10 + '0';
55 c2 = sequence % 10 + '0';
56 p[0] = '-';
57 }
58 else
59 {
60 srand(TAP_GetTick());
61 c1 = rand() % 26 + 'A';
62 c2 = rand() % 26 + 'A';
63 p[0] = ' ';
64 }
65
66 p[1] = c1;
67 p[2] = c2;
68
69 if((strlen(NewRecName) + strlen(try)) >= (dword)NewRecNameSize)
70 {
71 //Not enough space in NewRecName
72 TRACEEXIT();
73 return NewRecName;
74 }
75
76 strcat(NewRecName, try);
77 }
78
79 TRACEEXIT();
80 return NewRecName;
81}
char * HDD_MakeNewRecName(const char *fname, word sequence, char *NewRecName, int NewRecNameSize)
#define FBLIB_DIR_SIZE
Definition: libFireBird.h:1871
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243