+ case "${usergroup_phase}" in + local run_cmd + run_cmd=run_su + shift + run_su /opt/pkg/bin/bmake all BATCH=1 DEPENDS_TARGET=/nonexistent WRKLOG=/tmp/bulklog/mg2a-1.11nb2/work.log + su pbulk -c '"$@"' make /opt/pkg/bin/bmake all BATCH=1 DEPENDS_TARGET=/nonexistent WRKLOG=/tmp/bulklog/mg2a-1.11nb2/work.log WARNING: [license.mk] Every package should define a LICENSE. ===> Building for mg2a-1.11nb2 --- ttydef.h --- --- sysdef.h --- --- chrdef.h --- --- cinfo.c --- --- chrdef.h --- rm -f chrdef.h ln sys/default/chrdef.h . --- sysdef.h --- rm -f sysdef.h ln sys/sysv/sysdef.h . --- ttydef.h --- rm -f ttydef.h ln sys/default/ttydef.h . --- cinfo.c --- rm -f cinfo.c --- spawn.c --- --- ttyio.c --- --- tty.c --- --- cinfo.c --- ln sys/default/cinfo.c . --- spawn.c --- rm -f spawn.c --- ttyio.c --- rm -f ttyio.c ln sys/sysv/ttyio.c . --- ttykbd.c --- --- tty.c --- rm -f tty.c ln sys/default/tty.c . --- ttykbd.c --- rm -f ttykbd.c --- fileio.c --- --- spawn.c --- ln sys/sysv/spawn.c . --- ttykbd.c --- ln sys/default/ttykbd.c . --- fileio.c --- rm -f fileio.c --- basic.o --- --- dir.o --- --- fileio.c --- ln sys/sysv/fileio.c . --- basic.o --- gcc -pipe -O2 -msave-args -fno-aggressive-loop-optimizations -I/opt/pkg/include/ncurses -DDO_METAKEY -DPREFIXREGION -DSTARTUPFILE=\"mg.rc\" -DNO_BACKUP -DSYMBLINK -I/opt/pkg/include/ncurses -c basic.c --- dir.o --- gcc -pipe -O2 -msave-args -fno-aggressive-loop-optimizations -I/opt/pkg/include/ncurses -DDO_METAKEY -DPREFIXREGION -DSTARTUPFILE=\"mg.rc\" -DNO_BACKUP -DSYMBLINK -I/opt/pkg/include/ncurses -c dir.c --- file.o --- --- line.o --- --- basic.o --- basic.c:18:1: error: return type defaults to 'int' [-Wimplicit-int] 18 | gotobol(f, n) | ^~~~~~~ basic.c: In function 'gotobol': basic.c:18:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:18:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c: At top level: basic.c:31:1: error: return type defaults to 'int' [-Wimplicit-int] 31 | backchar(f, n) | ^~~~~~~~ basic.c: In function 'backchar': basic.c:31:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:36:27: error: implicit declaration of function 'forwchar' [-Wimplicit-function-declaration] 36 | if (n < 0) return forwchar(f, -n); | ^~~~~~~~ basic.c: At top level: basic.c:57:1: error: return type defaults to 'int' [-Wimplicit-int] 57 | gotoeol(f, n) | ^~~~~~~ basic.c: In function 'gotoeol': basic.c:57:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:57:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c: At top level: --- file.o --- gcc -pipe -O2 -msave-args -fno-aggressive-loop-optimizations -I/opt/pkg/include/ncurses -DDO_METAKEY -DPREFIXREGION -DSTARTUPFILE=\"mg.rc\" -DNO_BACKUP -DSYMBLINK -I/opt/pkg/include/ncurses -c file.c --- line.o --- gcc -pipe -O2 -msave-args -fno-aggressive-loop-optimizations -I/opt/pkg/include/ncurses -DDO_METAKEY -DPREFIXREGION -DSTARTUPFILE=\"mg.rc\" -DNO_BACKUP -DSYMBLINK -I/opt/pkg/include/ncurses -c line.c --- basic.o --- basic.c:70:1: error: return type defaults to 'int' [-Wimplicit-int] 70 | forwchar(f, n) | ^~~~~~~~ basic.c: In function 'forwchar': basic.c:70:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c: At top level: basic.c:96:1: error: return type defaults to 'int' [-Wimplicit-int] 96 | gotobob(f, n) | ^~~~~~~ basic.c: In function 'gotobob': basic.c:96:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:96:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c:98:16: error: implicit declaration of function 'setmark' [-Wimplicit-function-declaration] 98 | (VOID) setmark(f, n) ; | ^~~~~~~ basic.c: At top level: basic.c:110:1: error: return type defaults to 'int' [-Wimplicit-int] 110 | gotoeob(f, n) | ^~~~~~~ basic.c: In function 'gotoeob': basic.c:110:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:110:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c: At top level: basic.c:127:1: error: return type defaults to 'int' [-Wimplicit-int] 127 | forwline(f, n) | ^~~~~~~~ basic.c: In function 'forwline': basic.c:127:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:127:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c:132:24: error: implicit declaration of function 'backline' [-Wimplicit-function-declaration] 132 | return backline(f|FFRAND, -n); | ^~~~~~~~ basic.c:156:34: error: implicit declaration of function 'getgoal'; did you mean 'setgoal'? [-Wimplicit-function-declaration] 156 | curwp->w_doto = getgoal(dlp); | ^~~~~~~ | setgoal basic.c: At top level: basic.c:169:1: error: return type defaults to 'int' [-Wimplicit-int] 169 | backline(f, n) | ^~~~~~~~ basic.c: In function 'backline': basic.c:169:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:169:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c: In function 'setgoal': basic.c:196:19: error: implicit declaration of function 'getcolpos' [-Wimplicit-function-declaration] 196 | curgoal = getcolpos() - 1; /* Get the position. */ | ^~~~~~~~~ basic.c: At top level: basic.c:207:1: error: return type defaults to 'int' [-Wimplicit-int] 207 | getgoal(dlp) register LINE *dlp; { | ^~~~~~~ basic.c:244:1: error: return type defaults to 'int' [-Wimplicit-int] 244 | forwpage(f, n) | ^~~~~~~~ basic.c: In function 'forwpage': basic.c:244:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:254:24: error: implicit declaration of function 'backpage' [-Wimplicit-function-declaration] 254 | return backpage(f|FFRAND, -n); | ^~~~~~~~ basic.c: At top level: basic.c:281:1: error: return type defaults to 'int' [-Wimplicit-int] 281 | backpage(f, n) | ^~~~~~~~ basic.c: In function 'backpage': basic.c:281:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c: At top level: basic.c:339:1: error: return type defaults to 'int' [-Wimplicit-int] 339 | pagenext(f, n) | ^~~~~~~~ basic.c: In function 'pagenext': basic.c:339:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:339:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c:348:16: error: implicit declaration of function 'nextwind'; did you mean 'rewind'? [-Wimplicit-function-declaration] 348 | (VOID) nextwind(f, n); | ^~~~~~~~ | rewind basic.c: At top level: basic.c:371:1: error: return type defaults to 'int' [-Wimplicit-int] 371 | setmark(f, n) | ^~~~~~~ basic.c: In function 'setmark': basic.c:371:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:371:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c: At top level: basic.c:386:1: error: return type defaults to 'int' [-Wimplicit-int] 386 | swapmark(f, n) | ^~~~~~~~ basic.c: In function 'swapmark': basic.c:386:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:386:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] basic.c: At top level: basic.c:413:1: error: return type defaults to 'int' [-Wimplicit-int] 413 | gotoline(f, n) | ^~~~~~~~ basic.c: In function 'gotoline': basic.c:413:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] basic.c:421:24: error: implicit declaration of function 'ereply' [-Wimplicit-function-declaration] 421 | if ((s=ereply("Goto line: ", buf, sizeof(buf))) != TRUE) | ^~~~~~ basic.c:423:21: error: implicit declaration of function 'atoi' [-Wimplicit-function-declaration] 423 | n = atoi(buf); | ^~~~ --- line.o --- line.c: In function 'lalloc': line.c:60:26: error: implicit declaration of function 'malloc' [-Wimplicit-function-declaration] 60 | if((lp = (LINE *)malloc((unsigned)size)) == NULL) { | ^~~~~~ line.c:21:1: note: include '' or provide a declaration of 'malloc' 20 | #include "def.h" +++ |+#include 21 | line.c:60:26: warning: incompatible implicit declaration of built-in function 'malloc' [-Wbuiltin-declaration-mismatch] 60 | if((lp = (LINE *)malloc((unsigned)size)) == NULL) { | ^~~~~~ line.c:60:26: note: include '' or provide a declaration of 'malloc' line.c: In function 'lfree': line.c:127:9: error: implicit declaration of function 'free' [-Wimplicit-function-declaration] 127 | free((char *) lp); | ^~~~ line.c:127:9: note: include '' or provide a declaration of 'free' line.c:127:9: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] line.c:127:9: note: include '' or provide a declaration of 'free' line.c: At top level: line.c:168:1: error: return type defaults to 'int' [-Wimplicit-int] 168 | linsert(n, c) | ^~~~~~~ line.c: In function 'linsert': line.c:168:1: error: type of 'c' defaults to 'int' [-Wimplicit-int] line.c:226:17: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] 226 | free((char *) lp1); | ^~~~ line.c:226:17: note: include '' or provide a declaration of 'free' line.c: At top level: line.c:264:1: error: return type defaults to 'int' [-Wimplicit-int] 264 | lnewline() | ^~~~~~~~ line.c:317:1: error: return type defaults to 'int' [-Wimplicit-int] 317 | ldelete(n, kflag) RSIZE n; { | ^~~~~~~ line.c: In function 'ldelete': line.c:317:1: error: type of 'kflag' defaults to 'int' [-Wimplicit-int] line.c:343:29: error: implicit declaration of function 'ldelnewline'; did you mean 'lnewline'? [-Wimplicit-function-declaration] 343 | if (ldelnewline() == FALSE | ^~~~~~~~~~~ | lnewline line.c:344:45: error: implicit declaration of function 'kinsert'; did you mean 'linsert'? [-Wimplicit-function-declaration] 344 | || (kflag!=KNONE && kinsert('\n', kflag)==FALSE)) | ^~~~~~~ | linsert --- file.o --- file.c:20:1: error: return type defaults to 'int' [-Wimplicit-int] 20 | fileinsert(f, n) | ^~~~~~~~~~ file.c: In function 'fileinsert': file.c:20:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] file.c:20:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] file.c:25:16: error: implicit declaration of function 'ereply' [-Wimplicit-function-declaration] 25 | if ((s=ereply("Insert file: ", fname, NFILEN)) != TRUE) | ^~~~~~ file.c:27:16: error: implicit declaration of function 'insertfile' [-Wimplicit-function-declaration] 27 | return insertfile(adjustname(fname), (char *) NULL); | ^~~~~~~~~~ file.c: At top level: file.c:40:1: error: return type defaults to 'int' [-Wimplicit-int] 40 | filevisit(f, n) | ^~~~~~~~~ file.c: In function 'filevisit': file.c:40:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] file.c:40:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] --- line.o --- line.c:354:37: error: implicit declaration of function 'kgrow' [-Wimplicit-function-declaration] 354 | if (kgrow(FALSE) == FALSE) return FALSE; | ^~~~~ line.c:362:44: error: implicit declaration of function 'panic' [-Wimplicit-function-declaration] 362 | } else if (kflag != KNONE) panic("broken ldelete call"); | ^~~~~ line.c: At top level: line.c:396:1: error: return type defaults to 'int' [-Wimplicit-int] 396 | ldelnewline() { | ^~~~~~~~~~~ line.c: In function 'ldelnewline': line.c:423:17: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] 423 | free((char *) lp2); | ^~~~ line.c:423:17: note: include '' or provide a declaration of 'free' line.c:450:9: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] --- file.o --- file.c:52:13: error: implicit declaration of function 'showbuffer'; did you mean 'setbuffer'? [-Wimplicit-function-declaration] 52 | if (showbuffer(bp, curwp, WFHARD) != TRUE) return FALSE; | ^~~~~~~~~~ | setbuffer file.c:54:24: error: implicit declaration of function 'readin' [-Wimplicit-function-declaration] 54 | return readin(adjf); /* Read it in. */ | ^~~~~~ file.c: At top level: file.c:63:1: error: return type defaults to 'int' [-Wimplicit-int] 63 | poptofile(f, n) | ^~~~~~~~~ file.c: In function 'poptofile': file.c:63:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] file.c:63:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] file.c: At top level: file.c:130:1: error: return type defaults to 'int' [-Wimplicit-int] 130 | readin(fname) char *fname; { | ^~~~~~ file.c: In function 'readin': --- line.o --- 450 | free((char *) lp1); | ^~~~ line.c:450:9: note: include '' or provide a declaration of 'free' line.c: At top level: line.c:461:1: error: return type defaults to 'int' [-Wimplicit-int] 461 | lreplace(plen, st, f) | ^~~~~~~~ line.c: In function 'lreplace': line.c:477:16: error: implicit declaration of function 'backchar' [-Wimplicit-function-declaration] 477 | (VOID) backchar(FFARG | FFRAND, (int) plen); | ^~~~~~~~ line.c:517:40: error: implicit declaration of function 'forwchar' [-Wimplicit-function-declaration] 517 | (VOID) forwchar(FFRAND, 1); | ^~~~~~~~ line.c: In function 'kdelete': line.c:544:17: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] 544 | free((char *) kbufp); | ^~~~ line.c:544:17: note: include '' or provide a declaration of 'free' --- file.o --- file.c:134:13: error: implicit declaration of function 'bclear' [-Wimplicit-function-declaration] 134 | if (bclear(curbp) != TRUE) /* Might be old. */ | ^~~~~~ file.c: At top level: file.c:159:1: error: return type defaults to 'int' [-Wimplicit-int] 159 | insertfile(fname, newname) char fname[], newname[]; { | ^~~~~~~~~~ file.c: In function 'insertfile': file.c:173:16: error: implicit declaration of function 'ffropen'; did you mean 'fdopen'? [-Wimplicit-function-declaration] 173 | if ((s=ffropen(fname)) == FIOERR) /* Hard file open. */ | ^~~~~~~ | fdopen file.c:183:16: error: implicit declaration of function 'lnewline' [-Wimplicit-function-declaration] 183 | (VOID) lnewline(); | ^~~~~~~~ file.c:191:19: error: implicit declaration of function 'ffgetline'; did you mean 'getline'? [-Wimplicit-function-declaration] --- line.o --- line.c: At top level: line.c:559:1: error: return type defaults to 'int' [-Wimplicit-int] 559 | kinsert(c, dir) { | ^~~~~~~ line.c: In function 'kinsert': line.c:559:1: error: type of 'c' defaults to 'int' [-Wimplicit-int] line.c:559:1: error: type of 'dir' defaults to 'int' [-Wimplicit-int] line.c: At top level: line.c:575:1: error: return type defaults to 'int' [-Wimplicit-int] 575 | kgrow(back) { | ^~~~~ line.c: In function 'kgrow': line.c:575:1: error: type of 'back' defaults to 'int' [-Wimplicit-int] line.c:584:20: warning: incompatible implicit declaration of built-in function 'malloc' [-Wbuiltin-declaration-mismatch] 584 | if ((nbufp=malloc((unsigned)(ksize+KBLOCK))) == NULL) { | ^~~~~~ line.c:584:20: note: include '' or provide a declaration of 'malloc' line.c:591:17: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] 591 | free((char *) kbufp); --- file.o --- 191 | while ((s=ffgetline(line, NLINE, &nbytes)) != FIOERR) { | ^~~~~~~~~ | getline file.c:216:34: error: implicit declaration of function 'malloc' [-Wimplicit-function-declaration] 216 | if((cp = malloc((unsigned)(nbytes + NLINE))) == NULL) { | ^~~~~~ file.c:8:1: note: include '' or provide a declaration of 'malloc' 7 | #include +++ |+#include 8 | file.c:216:34: warning: incompatible implicit declaration of built-in function 'malloc' [-Wbuiltin-declaration-mismatch] 216 | if((cp = malloc((unsigned)(nbytes + NLINE))) == NULL) { | ^~~~~~ file.c:216:34: note: include '' or provide a declaration of 'malloc' file.c:220:40: error: implicit declaration of function 'free' [-Wimplicit-function-declaration] 220 | if(nbytes) free(cp2); --- line.o --- | ^~~~ line.c:591:17: note: include '' or provide a declaration of 'free' line.c: At top level: line.c:605:1: error: return type defaults to 'int' [-Wimplicit-int] 605 | kremove(n) { | ^~~~~~~ line.c: In function 'kremove': line.c:605:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] --- file.o --- | ^~~~ file.c:220:40: note: include '' or provide a declaration of 'free' file.c:220:40: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] file.c:220:40: note: include '' or provide a declaration of 'free' file.c:225:29: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] 225 | free(cp2); | ^~~~ file.c:225:29: note: include '' or provide a declaration of 'free' file.c:231:33: warning: incompatible implicit declaration of built-in function 'free' [-Wbuiltin-declaration-mismatch] 231 | free(cp); | ^~~~ file.c:231:33: note: include '' or provide a declaration of 'free' file.c:256:16: error: implicit declaration of function 'ffclose'; did you mean 'fclose'? [-Wimplicit-function-declaration] 256 | (VOID) ffclose(); /* Ignore errors. */ | ^~~~~~~ | fclose file.c:264:16: error: implicit declaration of function 'ldelnewline' [-Wimplicit-function-declaration] 264 | (VOID) ldelnewline(); | ^~~~~~~~~~~ file.c: At top level: file.c:346:1: error: return type defaults to 'int' [-Wimplicit-int] 346 | filewrite(f, n) | ^~~~~~~~~ file.c: In function 'filewrite': file.c:346:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] file.c:346:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] file.c:355:16: error: implicit declaration of function 'writeout' [-Wimplicit-function-declaration] 355 | if ((s=writeout(curbp, adjfname)) == TRUE) { | ^~~~~~~~ file.c: At top level: file.c:379:1: error: return type defaults to 'int' [-Wimplicit-int] 379 | filesave(f, n) | ^~~~~~~~ file.c: In function 'filesave': file.c:379:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] file.c:379:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] file.c:381:16: error: implicit declaration of function 'buffsave' [-Wimplicit-function-declaration] 381 | return buffsave(curbp); | ^~~~~~~~ file.c: At top level: file.c:393:1: error: return type defaults to 'int' [-Wimplicit-int] 393 | buffsave(bp) BUFFER *bp; { | ^~~~~~~~ file.c:451:1: error: return type defaults to 'int' [-Wimplicit-int] 451 | writeout(bp, fn) register BUFFER *bp; char *fn; { | ^~~~~~~~ file.c: In function 'writeout': file.c:548:19: error: implicit declaration of function 'system' [-Wimplicit-function-declaration] 548 | if (0 != system(cmd)) printf(".orig backup failed: '%s'\n", cmd); | ^~~~~~ file.c:582:16: error: implicit declaration of function 'ffwopen'; did you mean 'fdopen'? [-Wimplicit-function-declaration] 582 | if ((s=ffwopen(fn)) != FIOSUC) /* Open writes message. */ | ^~~~~~~ | fdopen file.c:584:13: error: implicit declaration of function 'ffputbuf' [-Wimplicit-function-declaration] 584 | s = ffputbuf(bp); | ^~~~~~~~ --- basic.o --- *** [basic.o] Error code 1 bmake: stopped making "mg" in /home/pbulk/build/editors/mg2a/work/mg2a --- line.o --- *** [line.o] Error code 1 bmake: stopped making "mg" in /home/pbulk/build/editors/mg2a/work/mg2a --- dir.o --- dir.c:21:1: error: return type defaults to 'int' [-Wimplicit-int] 21 | dirinit() | ^~~~~~~ dir.c: In function 'dirinit': dir.c:25:17: error: implicit declaration of function 'panic' [-Wimplicit-function-declaration] 25 | panic("Can't get current directory!"); | ^~~~~ dir.c: At top level: dir.c:32:1: error: return type defaults to 'int' [-Wimplicit-int] 32 | changedir(f, n) | ^~~~~~~~~ dir.c: In function 'changedir': dir.c:32:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] dir.c:32:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] dir.c:37:16: error: implicit declaration of function 'ereply' [-Wimplicit-function-declaration] 37 | if ((s=ereply("Change default directory: ", bufc, NPAT)) != TRUE) | ^~~~~~ dir.c:41:13: error: implicit declaration of function 'chdir' [-Wimplicit-function-declaration] 41 | if (chdir(bufc) == -1) { | ^~~~~ dir.c: At top level: dir.c:57:1: error: return type defaults to 'int' [-Wimplicit-int] 57 | showcwdir(f, n) | ^~~~~~~~~ dir.c: In function 'showcwdir': dir.c:57:1: error: type of 'f' defaults to 'int' [-Wimplicit-int] dir.c:57:1: error: type of 'n' defaults to 'int' [-Wimplicit-int] --- file.o --- *** [file.o] Error code 1 bmake: stopped making "mg" in /home/pbulk/build/editors/mg2a/work/mg2a --- dir.o --- *** [dir.o] Error code 1 bmake: stopped making "mg" in /home/pbulk/build/editors/mg2a/work/mg2a bmake: 4 errors bmake: stopped making "mg" in /home/pbulk/build/editors/mg2a/work/mg2a *** Error code 2 Stop. bmake[1]: stopped making "all" in /data/jenkins/workspace/pkgsrc-upstream-trunk/editors/mg2a *** Error code 1 Stop. bmake: stopped making "all" in /data/jenkins/workspace/pkgsrc-upstream-trunk/editors/mg2a