sicily
ABC Widgets Enjoy PTS-SICILIA for your transfers in Sicilia.QUALITY-COURTESY-ADVANTAGE for one click!www.pts-sicilia.com ÐÐ»Ñ ÑÑанÑÑеÑов по СиÑилии - Ð²Ð°Ñ Ð²ÑÐ±Ð¾Ñ PTS-SICILIA!ÐаÑеÑÑвенно, безÑкоÑизненно, вÑгодно - за один клик!www.pts-sicilia.com Tel. +39 0942.630080 - Fax +39 0942.630503 - i...@pts-sicilia.com [demime 1.01d removed an attachment of type image/png which had a name of 1.png] [demime 1.01d removed an attachment of type image/jpeg which had a name of 2.jpg]
Re: Scheduler improvements, take 1001, Patch 2/5
On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best g...@ring0.de wrote: This patch simply halves the timeslice processes get until they are preempted. This patch is standalone and the rest of the patches does not depend on it, but I figured I'd throw it in anyway. -- Gregor Best Didn't get this patch. Is it me or the patch is missing?
Re: Scheduler improvements, take 1001, Patch 2/5
On Sun, Oct 14, 2012 at 11:05:36AM +0200, David Coppa wrote: On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best g...@ring0.de wrote: This patch simply halves the timeslice processes get until they are preempted. This patch is standalone and the rest of the patches does not depend on it, but I figured I'd throw it in anyway. -- Gregor Best Didn't get this patch. Is it me or the patch is missing? The patch was the message my mail was in reply to. There's no Patch 2/5 subject line because I forgot to change that after sending out Patch 1/5. -- Gregor Best
Re: Scheduler improvements, take 1001, Patch 2/5
Gregor you would perhaps get better feedback if it were easier to discern where your patches are and what each one is doing. If you can't be inclined to keep the subjects matching the diffs and are sending stuff out with subjects like scheduler improvement diff X instead of something like reduce time slice length by 50% it makes it a lot more effort for someone to read and test. On Oct 14, 2012 9:01 AM, Gregor Best g...@ring0.de wrote: On Sun, Oct 14, 2012 at 11:05:36AM +0200, David Coppa wrote: On Tue, Oct 9, 2012 at 6:21 PM, Gregor Best g...@ring0.de wrote: This patch simply halves the timeslice processes get until they are preempted. This patch is standalone and the rest of the patches does not depend on it, but I figured I'd throw it in anyway. -- Gregor Best Didn't get this patch. Is it me or the patch is missing? The patch was the message my mail was in reply to. There's no Patch 2/5 subject line because I forgot to change that after sending out Patch 1/5. -- Gregor Best
smaller make patch, to test p107
millert@ already saw all of this. This solves a few minor/major problems. - Theo wants no blank line at end of ^C error messages. This blank line actually comes from the shell/tty, so we have to refrain printing out the last \n in that situation. - make sure errors go thru handle_all_signals(), so that signals are handled properly. 1/- We have outgrown Buf_KillTrailingSpaces. More importantly, this fixes some posix compliance bug, since spaces at end of variable assignments are NOT supposed to get stripped. So far, one non-compliant Makefile got fixed in xenocara. src seems very happy with this. Basically, this means that for POSIX; A = some value # and some comment Then A will be set to exactly 'some value '. (spaces around the = sign get stripped, but spaces before a comment DON'T) - compat mode should expand .USE right away. It can never be an aliased target. And accordingly, this turns into a straight switch() right away 2/- fix the cond parser to actually LOOK for its special keywords instead of blindly ignoring other stuff (this is the cause of .if existS fix in cc, btw). Use isspace more consistently while there... - make parse/cond error messages look MORE like the new regular error message. This can be tweaked some more if necessary. - zap an extra cond error message that's not needed since the .if/.endif parser is verbose enough. - remove some MORE verbosity that's not needed. - unclosed var specs in varmodifiers should be treated the same as the common one. (there are some other Errors in varmodifiers that may or may not need to be turned into errors, but this can wait). Out of this, I'd like feedback on the improved messages, and most importantly TESTS about the more bitchy cond parser and posix compliant general parser. Note that this can easily be cut into a few easy to read, independent patches. But I'm mostly interested in ppl running all of that and reporting problems. If any problems, I expect they will come from 1/ and 2/ mostly. Index: buf.c === RCS file: /home/openbsd/cvs/src/usr.bin/make/buf.c,v retrieving revision 1.24 diff -u -p -r1.24 buf.c --- buf.c 21 Sep 2012 07:55:20 - 1.24 +++ buf.c 13 Oct 2012 14:22:50 - @@ -161,13 +161,3 @@ Buf_Init(Buffer bp, size_t size) bp-inPtr = bp-endPtr = bp-buffer = emalloc(size); bp-endPtr += size; } - -void -Buf_KillTrailingSpaces(Buffer bp) -{ - while (bp-inPtr bp-buffer + 1 isspace(bp-inPtr[-1])) { - if (bp-inPtr[-2] == '\\') - break; - bp-inPtr--; - } -} Index: buf.h === RCS file: /home/openbsd/cvs/src/usr.bin/make/buf.h,v retrieving revision 1.21 diff -u -p -r1.21 buf.h --- buf.h 2 Oct 2012 10:29:30 - 1.21 +++ buf.h 13 Oct 2012 14:22:55 - @@ -131,10 +131,6 @@ do { \ * Adds characters between s and e to buffer. */ #define Buf_Addi(b, s, e) Buf_AddChars((b), (e) - (s), (s)) -/* Buf_KillTrailingSpaces(buf); - * Removes non-backslashed spaces at the end of a buffer. */ -extern void Buf_KillTrailingSpaces(Buffer); - extern void Buf_printf(Buffer, const char *, ...); #define Buf_puts(b, s) Buf_AddChars((b), strlen(s), (s)) Index: compat.c === RCS file: /home/openbsd/cvs/src/usr.bin/make/compat.c,v retrieving revision 1.77 diff -u -p -r1.77 compat.c --- compat.c21 Sep 2012 07:55:20 - 1.77 +++ compat.c14 Oct 2012 15:15:21 - @@ -86,6 +86,12 @@ CompatMake(void *gnp,/* The node to mak */ if (gn == pgn) return; + /* handle .USE right away */ + if (gn-type OP_USE) { + Make_HandleUse(gn, pgn); + return; + } + look_harder_for_target(gn); if (pgn != NULL is_sibling(gn, pgn)) @@ -103,9 +109,8 @@ CompatMake(void *gnp, /* The node to mak } while (sib != gn); } - if (gn-type OP_USE) { - Make_HandleUse(gn, pgn); - } else if (gn-built_status == UNKNOWN) { + switch(gn-built_status) { + case UNKNOWN: /* First mark ourselves to be made, then apply whatever * transformations the suffix module thinks are necessary. * Once that's done, we can descend and make all our children. @@ -232,30 +237,29 @@ CompatMake(void *gnp, /* The node to mak print_errors(); exit(1); } - } else if (gn-built_status == ERROR) + break; + case ERROR: /* Already had an error when making this beastie. Tell the * parent to abort. */ pgn-must_make = false; - else { - switch (gn-built_status) {
p108 Re: smaller make patch, to test p107
On Sun, Oct 14, 2012 at 06:49:34PM +0200, Marc Espie wrote: millert@ already saw all of this. This solves a few minor/major problems. - Theo wants no blank line at end of ^C error messages. This blank line actually comes from the shell/tty, so we have to refrain printing out the last \n in that situation. This part was confusing. Put on hold for now. - make sure errors go thru handle_all_signals(), so that signals are handled properly. Implied by posix, so keep. The rest doesn't change, new patch follows (smaller actually) 1/- We have outgrown Buf_KillTrailingSpaces. More importantly, this fixes some posix compliance bug, since spaces at end of variable assignments are NOT supposed to get stripped. So far, one non-compliant Makefile got fixed in xenocara. src seems very happy with this. Basically, this means that for POSIX; A = some value # and some comment Then A will be set to exactly 'some value '. (spaces around the = sign get stripped, but spaces before a comment DON'T) - compat mode should expand .USE right away. It can never be an aliased target. And accordingly, this turns into a straight switch() right away 2/- fix the cond parser to actually LOOK for its special keywords instead of blindly ignoring other stuff (this is the cause of .if existS fix in cc, btw). Use isspace more consistently while there... - make parse/cond error messages look MORE like the new regular error message. This can be tweaked some more if necessary. - zap an extra cond error message that's not needed since the .if/.endif parser is verbose enough. - remove some MORE verbosity that's not needed. - unclosed var specs in varmodifiers should be treated the same as the common one. (there are some other Errors in varmodifiers that may or may not need to be turned into errors, but this can wait). Out of this, I'd like feedback on the improved messages, and most importantly TESTS about the more bitchy cond parser and posix compliant general parser. Note that this can easily be cut into a few easy to read, independent patches. But I'm mostly interested in ppl running all of that and reporting problems. If any problems, I expect they will come from 1/ and 2/ mostly. Index: buf.c === RCS file: /home/openbsd/cvs/src/usr.bin/make/buf.c,v retrieving revision 1.24 diff -u -p -r1.24 buf.c --- buf.c 21 Sep 2012 07:55:20 - 1.24 +++ buf.c 13 Oct 2012 14:22:50 - @@ -161,13 +161,3 @@ Buf_Init(Buffer bp, size_t size) bp-inPtr = bp-endPtr = bp-buffer = emalloc(size); bp-endPtr += size; } - -void -Buf_KillTrailingSpaces(Buffer bp) -{ - while (bp-inPtr bp-buffer + 1 isspace(bp-inPtr[-1])) { - if (bp-inPtr[-2] == '\\') - break; - bp-inPtr--; - } -} Index: buf.h === RCS file: /home/openbsd/cvs/src/usr.bin/make/buf.h,v retrieving revision 1.21 diff -u -p -r1.21 buf.h --- buf.h 2 Oct 2012 10:29:30 - 1.21 +++ buf.h 13 Oct 2012 14:22:55 - @@ -131,10 +131,6 @@ do { \ * Adds characters between s and e to buffer. */ #define Buf_Addi(b, s, e) Buf_AddChars((b), (e) - (s), (s)) -/* Buf_KillTrailingSpaces(buf); - * Removes non-backslashed spaces at the end of a buffer. */ -extern void Buf_KillTrailingSpaces(Buffer); - extern void Buf_printf(Buffer, const char *, ...); #define Buf_puts(b, s) Buf_AddChars((b), strlen(s), (s)) Index: compat.c === RCS file: /home/openbsd/cvs/src/usr.bin/make/compat.c,v retrieving revision 1.77 diff -u -p -r1.77 compat.c --- compat.c21 Sep 2012 07:55:20 - 1.77 +++ compat.c14 Oct 2012 15:15:21 - @@ -86,6 +86,12 @@ CompatMake(void *gnp,/* The node to mak */ if (gn == pgn) return; + /* handle .USE right away */ + if (gn-type OP_USE) { + Make_HandleUse(gn, pgn); + return; + } + look_harder_for_target(gn); if (pgn != NULL is_sibling(gn, pgn)) @@ -103,9 +109,8 @@ CompatMake(void *gnp, /* The node to mak } while (sib != gn); } - if (gn-type OP_USE) { - Make_HandleUse(gn, pgn); - } else if (gn-built_status == UNKNOWN) { + switch(gn-built_status) { + case UNKNOWN: /* First mark ourselves to be made, then apply whatever * transformations the suffix module thinks are necessary. * Once that's done, we can descend and make all our children. @@ -232,30 +237,29 @@ CompatMake(void *gnp, /* The node to mak print_errors(); exit(1); } - } else if (gn-built_status == ERROR) +
¡SE BUSCAN LÍDERES!
Una Oportunidad que no te recomendamos que dejes pasar. ¡La Próxima gran Red de Ganancias para TODOS! * Oportunidad Online de Ingreso Global. * ¡Disponible en 130 Paises! * 10 Productos de Comunicación por Video de Proxima Generación que tienen emocionantes beneficios Personales y de Negocios. * ¡Primera y Única Empresa en el Mundo Entero que te paga TODAS tus Comisiones al INSTANTE! ¡SE BUSCAN LÍDERES!Conviértete en uno de los Pioneros en tu Ciudad y País. Requisitos para pertenecer a nuestro Equipo: * Tener Experiencia en la Industria de la Venta Directa o Multinivel. * Tener una capacidad de Inversión. * Tener una cuenta en Skype. Únete a Nosotros Hoy, Una Oportunidad que NO te puedes perder. [demime 1.01d removed an attachment of type image/jpeg which had a name of click1.jpg]
Re: mg: prompt for revert on dirty buffer
Updated diff, on pressing the wrong key the prompt should be Please answer y, n or r. pointed out by lum@, thanks! diff --git buffer.c buffer.c index 60076bb..6bce870 100644 --- buffer.c +++ buffer.c @@ -856,11 +856,18 @@ checkdirty(struct buffer *bp) bp-b_flag |= BFDIRTY; if ((bp-b_flag (BFDIRTY | BFIGNDIRTY)) == BFDIRTY) { - if ((s = eyorn(File changed on disk; really edit the buffer)) - != TRUE) + s = eynorr(File changed on disk; really edit the buffer); + switch (s) { + case TRUE: + bp-b_flag = ~BFDIRTY; + bp-b_flag |= BFIGNDIRTY; + return (TRUE); + case REVERT: + dorevert(); + return (FALSE); + default: return (s); - bp-b_flag = ~BFDIRTY; - bp-b_flag |= BFIGNDIRTY; + } } return (TRUE); @@ -873,10 +880,8 @@ checkdirty(struct buffer *bp) int revertbuffer(int f, int n) { - struct mgwin *wp = wheadp; - struct buffer *bp = wp-w_bufp; + struct buffer *bp = wheadp-w_bufp; char fbuf[NFILEN + 32]; - int lineno; if (bp-b_fname[0] == 0) { ewprintf(Cannot revert buffer not associated with any files.); @@ -885,26 +890,36 @@ revertbuffer(int f, int n) snprintf(fbuf, sizeof(fbuf), Revert buffer from file %s, bp-b_fname); - if (eyorn(fbuf)) { - if (access(bp-b_fname, F_OK|R_OK) != 0) { - if (errno == ENOENT) - ewprintf(File %s no longer exists!, - bp-b_fname); - else - ewprintf(File %s is no longer readable!, - bp-b_fname); - return (FALSE); - } + if (eyorn(fbuf)) + return dorevert(); - /* Save our current line, so we can go back after reloading. */ - lineno = wp-w_dotline; + return (FALSE); +} - /* Prevent readin from asking if we want to kill the buffer. */ - curbp-b_flag = ~BFCHG; +int +dorevert() +{ + struct mgwin *wp = wheadp; + struct buffer *bp = wp-w_bufp; + int lineno; - if (readin(bp-b_fname)) - return(setlineno(lineno)); + if (access(bp-b_fname, F_OK|R_OK) != 0) { + if (errno == ENOENT) + ewprintf(File %s no longer exists!, + bp-b_fname); + else + ewprintf(File %s is no longer readable!, + bp-b_fname); + return (FALSE); } + /* Save our current line, so we can go back after reloading. */ + lineno = wp-w_dotline; + + /* Prevent readin from asking if we want to kill the buffer. */ + curbp-b_flag = ~BFCHG; + + if (readin(bp-b_fname)) + return(setlineno(lineno)); return (FALSE); } diff --git def.h def.h index c24c850..2098521 100644 --- def.h +++ def.h @@ -37,6 +37,7 @@ typedef int (*PF)(int, int);/* generally useful type */ #define TRUE 1 /* True, yes, good, etc. */ #define ABORT 2 /* Death, ^G, abort, etc.*/ #define UERROR 3 /* User Error. */ +#define REVERT 4 /* Revert the buffer */ #define KCLEAR 2 /* clear echo area */ @@ -415,6 +416,7 @@ int popbuftop(struct buffer *, int); int getbufcwd(char *, size_t); int checkdirty(struct buffer *); int revertbuffer(int, int); +int dorevert(); /* display.c */ intvtresize(int, int, int); @@ -426,6 +428,7 @@ int linenotoggle(int, int); /* echo.c X */ voideerase(void); int eyorn(const char *); +int eynorr(const char *); int eyesno(const char *); voidewprintf(const char *fmt, ...); char *ereply(const char *, char *, size_t, ...); diff --git echo.c echo.c index beff2f1..21ef865 100644 --- echo.c +++ echo.c @@ -72,6 +72,36 @@ eyorn(const char *sp) } /* + * Ask a yes, no or revert question. Return ABORT if the user answers + * the question with the abort (^G) character. Return FALSE for no, + * TRUE for yes and REVERT for revert. No formatting services are + * available. No newline required. + */ +int +eynorr(const char *sp) +{ + int s; + + if (inmacro) + return (TRUE); + + ewprintf(%s? (y, n or r) , sp); + for (;;) { + s = getkey(FALSE); + if (s == 'y' || s == 'Y' || s == ' ') + return (TRUE); +