@@ -49,6 +49,7 @@ bool ignore_sigint = false;
49
49
bool restore_tty = false ;
50
50
bool mockdebug = false ;
51
51
int mock_port_shifter = MOCK_PORT_SHIFTER;
52
+ const char * fspath = nullptr ;
52
53
53
54
#define STDIN STDIN_FILENO
54
55
@@ -120,19 +121,24 @@ void help (const char* argv0, int exitcode)
120
121
printf (
121
122
" %s - compiled with esp8266/arduino emulator\n "
122
123
" options:\n "
123
- " -h\n "
124
- " -i <interface> - use this interface for IP address\n "
125
- " -l - bind tcp/udp servers to interface only (not 0.0.0.0)\n "
126
- " -s - port shifter (default: %d, when root: 0)\n "
127
- " -c - ignore CTRL-C (send it via Serial)\n "
128
- " -f - no throttle (possibly 100%%CPU)\n "
129
- " -b - blocking tty/mocked-uart (default: not blocking tty)\n "
130
- " -S - spiffs size in KBytes (default: %zd)\n "
131
- " -L - littlefs size in KBytes (default: %zd)\n "
124
+ " \t -h\n "
125
+ " \t network:\n "
126
+ " \t -i <interface> - use this interface for IP address\n "
127
+ " \t -l - bind tcp/udp servers to interface only (not 0.0.0.0)\n "
128
+ " \t -s - port shifter (default: %d, when root: 0)\n "
129
+ " \t terminal:\n "
130
+ " \t -b - blocking tty/mocked-uart (default: not blocking tty)\n "
131
+ " \t -T - show timestamp on output\n "
132
+ " \t FS:\n "
133
+ " \t -P - path for fs-persistent files (default: %s-)\n "
134
+ " \t -S - spiffs size in KBytes (default: %zd)\n "
135
+ " \t -L - littlefs size in KBytes (default: %zd)\n "
132
136
" \t (spiffs, littlefs: negative value will force mismatched size)\n "
133
- " -T - show timestamp on output\n "
134
- " -v - verbose\n "
135
- , argv0, MOCK_PORT_SHIFTER, spiffs_kb, littlefs_kb);
137
+ " \t general:\n "
138
+ " \t -c - ignore CTRL-C (send it via Serial)\n "
139
+ " \t -f - no throttle (possibly 100%%CPU)\n "
140
+ " \t -v - verbose\n "
141
+ , argv0, MOCK_PORT_SHIFTER, argv0, spiffs_kb, littlefs_kb);
136
142
exit (exitcode);
137
143
}
138
144
@@ -146,6 +152,7 @@ static struct option options[] =
146
152
{ " verbose" , no_argument, NULL , ' v' },
147
153
{ " timestamp" , no_argument, NULL , ' T' },
148
154
{ " interface" , required_argument, NULL , ' i' },
155
+ { " fspath" , required_argument, NULL , ' P' },
149
156
{ " spiffskb" , required_argument, NULL , ' S' },
150
157
{ " littlefskb" , required_argument, NULL , ' L' },
151
158
{ " portshifter" , required_argument, NULL , ' s' },
@@ -158,6 +165,23 @@ void cleanup ()
158
165
mock_stop_uart ();
159
166
}
160
167
168
+ void make_fs_filename (String& name, const char * fspath, const char * argv0)
169
+ {
170
+ name.clear ();
171
+ if (fspath)
172
+ {
173
+ int lastSlash = -1 ;
174
+ for (int i = 0 ; argv0[i]; i++)
175
+ if (argv0[i] == ' /' )
176
+ lastSlash = i;
177
+ name = fspath;
178
+ name += ' /' ;
179
+ name += &argv0[lastSlash + 1 ];
180
+ }
181
+ else
182
+ name = argv0;
183
+ }
184
+
161
185
void control_c (int sig)
162
186
{
163
187
(void )sig;
@@ -177,14 +201,15 @@ int main (int argc, char* const argv [])
177
201
blocking_uart = false ; // global
178
202
179
203
signal (SIGINT, control_c);
204
+ signal (SIGTERM, control_c);
180
205
if (geteuid () == 0 )
181
206
mock_port_shifter = 0 ;
182
207
else
183
208
mock_port_shifter = MOCK_PORT_SHIFTER;
184
209
185
210
for (;;)
186
211
{
187
- int n = getopt_long (argc, argv, " hlcfbvTi:S:s:L:" , options, NULL );
212
+ int n = getopt_long (argc, argv, " hlcfbvTi:S:s:L:P: " , options, NULL );
188
213
if (n < 0 )
189
214
break ;
190
215
switch (n)
@@ -213,6 +238,9 @@ int main (int argc, char* const argv [])
213
238
case ' L' :
214
239
littlefs_kb = atoi (optarg );
215
240
break ;
241
+ case ' P' :
242
+ fspath = optarg ;
243
+ break ;
216
244
case ' b' :
217
245
blocking_uart = true ;
218
246
break ;
@@ -231,7 +259,8 @@ int main (int argc, char* const argv [])
231
259
232
260
if (spiffs_kb)
233
261
{
234
- String name = argv[0 ];
262
+ String name;
263
+ make_fs_filename (name, fspath, argv[0 ]);
235
264
name += " -spiffs" ;
236
265
name += String (spiffs_kb > 0 ? spiffs_kb: -spiffs_kb, DEC);
237
266
name += " KB" ;
@@ -240,7 +269,8 @@ int main (int argc, char* const argv [])
240
269
241
270
if (littlefs_kb)
242
271
{
243
- String name = argv[0 ];
272
+ String name;
273
+ make_fs_filename (name, fspath, argv[0 ]);
244
274
name += " -littlefs" ;
245
275
name += String (littlefs_kb > 0 ? littlefs_kb: -littlefs_kb, DEC);
246
276
name += " KB" ;
0 commit comments