annotate pwplib/pwplib-win.c @ 50:e2b6a35bcb0c

Remove usage of malloc.h; Other misc cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 24 May 2010 08:48:18 +0300
parents 7deee201073e
children 85671798fdb3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 #define __PWPLIB_C
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 #include "config.h"
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 #include <stdio.h>
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 #include <stdlib.h>
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 #include <windows.h>
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
10 #ifdef DRIVE_SDL
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
11 #include <SDL.h>
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
12 #endif
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
13
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 #include "pwplib.h"
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
16 static int sdl_init = 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
17
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 /******************** random stuff *************************/
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 extern void pwplib_dummy();
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21 #define pwp_dummy pwplib_dummy
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
23 void pwpwrite(const char *fmt, ...)
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
24 {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
25 if (!pwplib.setup[SETUP_SHUTUP]) {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
26 va_list ap;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
27 va_start(ap, fmt);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
28 vfprintf(stderr, fmt, ap);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
29 va_end(ap);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
30
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
31 usleep(1000 * pwplib.set.infodelay);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
32 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
33 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
34
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 /********************* timer ******************************/
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 #define TIMERHZ 72
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 int pwp_w32_ticks()
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 {
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
40 #ifdef DRIVE_SDL
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
41 if (sdl_init) {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
42 int quit = 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
43 SDL_Event event;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
44 if (SDL_PollEvent(&event) >= 0) {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
45 switch (event.type) {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
46 case SDL_KEYDOWN:
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
47 if (event.key.keysym.sym == SDLK_ESCAPE)
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
48 quit = 1;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
49 break;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
50 case SDL_QUIT:
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
51 quit = 1;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
52 break;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
53 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
54 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
55 if (quit) {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
56 SDL_Quit();
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
57 pwplib_shutdown();
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
58 exit(1);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
59 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
60 return (SDL_GetTicks() * TIMERHZ) / 1000;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
61 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
62 else
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
63 #endif
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
64 {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
65 int ticks = GetTickCount();
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
66 return ((ticks*TIMERHZ)/1000);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
67 // (10000000/10441));
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
68 }
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69 }
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71 /******************** initialization *********************/
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 int pwplib_initcore()
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74 {
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
75 int sdl_flags = 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
76
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
77 pwplib_init_common();
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
79 #ifdef DRIVE_SDL
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
80 if (SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_AUDIO) != 0) {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
81 pwpwrite("* SDL could not be initialized (%s).\n", SDL_GetError());
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
82 sdl_init = 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
83 } else
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
84 sdl_init = 1;
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
86 if (sdl_init && !pwp_SDL_init())
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
87 {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
88 sdl_init = 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
89 SDL_Quit();
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
90 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
91 if (sdl_init && !pwp_sdlaudio_init())
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
92 {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
93 sdl_init = 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
94 SDL_Quit();
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
95 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
96 #endif
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
98 if (!sdl_init) {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
99 #ifdef DRIVE_WIN32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
100 win32con_init();
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
101 win32snd_init();
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
102 if (pwplib.dump_rast == pwplib_dummy && pwplib.dump_attr != pwplib_dummy)
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
103 pwplib.dump_rast = pwplib_dump_rast_plain;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
104 #else
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
105 return 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
106 #endif
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
107 }
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
109 pwplib.timerfunc = pwp_w32_ticks;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
110
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
111 return 1;
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
112 }
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
113
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
114 /*********************************************************************/
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
115
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
116 void pwplib_startup()
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
117 {
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
118 /* just dummy here */
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
119 }
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
121 void pwplib_end()
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
122 {
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
123 pwplib_shutdown();
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
124
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125 /* write some stuph */
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 }
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
128 #ifdef __WIN32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
129 int usleep(int t)
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
130 {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
131 Sleep(t / 1000);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
132 }
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
133 #endif
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
134
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
135 /***************************************************************/
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137 extern void pwplib_getopts();
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
138
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
139 int pwplib_init(int argc,char**argv)
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
140 {
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
141 pwplib.argc=argc;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
142 pwplib.argv=argv;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
143
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
144 pwplib_getopts();
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
145
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
146 if (pwplib.setup[SETUP_WANTHELP])
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
147 {
50
e2b6a35bcb0c Remove usage of malloc.h; Other misc cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 32
diff changeset
148 pwplib_printhelp();
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
149 exit(0);
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
150 }
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
151
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
152 if (!pwplib_initcore())
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
153 {
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
154 pwpwrite("initialization failed!\n");
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
155 return 0;
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
156 }
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
157
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
158 if (pwplib.setup[SETUP_WANTHELP])
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
159 return 0;
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
160
32
7deee201073e Initial SDL/Win32 support.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
161 return 1;
0
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162 }
acb5694e93d9 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
163