Initial revision
[blender.git] / source / blender / src / cre / license_key.c
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32
33 #include "license_key.h"
34 #include "keyed_functions.h"
35 #include "BKE_utildefines.h"
36 #include "BIF_screen.h"  // splash
37 #include "BIF_toolbox.h"
38 #include "blenkey.h"
39 #include <stdio.h>
40 #include <string.h>
41 #include "BLO_readfile.h"
42 #include "BLO_keyStore.h"
43
44 int LICENSE_KEY_VALID = FALSE;
45 int I_AM_PUBLISHER = FALSE;
46
47 static UserStruct User;
48
49 // Python stuff
50
51 #include "Python.h"
52 #include "marshal.h" 
53 #include "compile.h" /* to give us PyCodeObject */
54 #include "eval.h"               /* prototype for PyEval_EvalCode */
55
56
57 Fptr g_functab[PYKEY_TABLEN];
58 Fptr g_ptrtab[PYKEY_TABLEN];
59
60 static int g_seed[3] = PYKEY_SEED;
61 static PyObject *g_module_self;
62 static PyObject *g_main;
63
64
65 // end Python stuff
66
67 // **************** PYTHON STUFF **************************
68 /* ----------------------------------------------------- */
69 /* this is the dummy functions to demonstrate */
70
71 int sticky_shoes(void *vp)
72 {
73 #ifndef NDEBUG
74         printf("feature not enabled: Buy our Key NOW!\n");
75 #endif
76         return 0;
77 }
78
79 /*
80 int key_func1(void *vp) {
81         printf("function 1 called\n");
82 }
83
84 */
85 int key_return_true(void *vp) {
86 #ifndef NDEBUG
87         printf("function 2 called (return true)\n");
88 #endif
89         return 1;
90 }
91
92 /* ----------------------------------------------------- */
93
94 /* Declarations for objects of type Fplist */
95
96
97 #ifndef NDEBUG
98 void feature1(void)
99 {
100         Fptr f;
101
102         printf("feature 2 called\n");
103         f = g_ptrtab[KEY_FUNC2];
104         if (f) f(0);
105 }
106
107 void feature2(void)
108 {
109         Fptr f;
110
111         printf("feature 3 called\n");
112         f = g_ptrtab[KEY_FUNC3];
113         if (f) f(0);
114 }
115
116 #endif
117
118
119 /* Initialization function for the module (*must* be called initprot) */
120
121 static void init_ftable(void)  // initializes functiontable
122 {
123         int i;
124
125         g_functab[0] = &key_func1;
126         g_functab[1] = &key_func2;
127         g_functab[2] = &key_func3;
128
129         for (i = 3; i < PYKEY_TABLEN; i++)
130         {
131                 g_functab[i] = &sticky_shoes;
132         }
133
134         // for debugging perposes
135         /*
136         for (i = 0; i < PYKEY_TABLEN; i++)
137         {
138                 g_functab[i] = (Fptr *) (i + 100);
139         }
140         */
141 }
142
143
144 static void init_ptable(void)  // initializes functiontable
145 {
146         int i;
147
148         for (i = 0; i < PYKEY_TABLEN; i++)
149         {
150                 g_ptrtab[i] = &sticky_shoes;
151         }
152 }
153
154
155 #ifdef NDEBUG
156 static void print_ptable(void)
157 {       
158         int i;
159
160         for (i = 0; i < PYKEY_TABLEN; i++)
161         {
162                 printf ("index[%02d] = %08x\n", i, g_ptrtab[i]);
163         }
164 }
165 #endif
166
167 static void insertname(PyObject *m,PyObject *p, char *name)
168 {
169 }
170
171 /* initialisation */
172 static void initprot()
173 {
174         init_ftable(); // malloc
175         init_ptable(); // malloc
176 }
177
178 // ******************************* KEY STUFF *********************
179
180 void create_key_name(char * keyname)
181 {
182 }
183
184 void checkhome()
185 {
186         initprot();                   // initialize module and function tables
187 }
188
189 void SHOW_LICENSE_KEY(void)
190 {
191 }
192
193 void loadKeyboard(char * name)
194 {
195 }