Hi,

On Friday, 20 July 2007 17:54, Alon Bar-Lev wrote:
> 
> Hello,
> 
> This patch enables the user to press "r" during snapshot writing,
> in order to reboot and not shutdown.
> 
> One more step toward suspend2 functionality... :)
> 
> Best Regards,
> Alon Bar-Lev.
> 
> diff -urNp suspend.org/splash.c suspend/splash.c
> --- suspend.org/splash.c      2007-05-12 23:37:47.000000000 +0300
> +++ suspend/splash.c  2007-07-20 18:28:51.000000000 +0300
> @@ -51,13 +51,13 @@ static int prepare_abort(struct termios 
>       return ret;
>  }
>  
> -static int key_pressed(const char key)
> +static char key_pressed(void)
>  {
>       char c;
> -     if (read(0, &c, 1) > 0 && c == key) 
> -             return 1;
> +     if (read(0, &c, 1) == 0) 
> +             return 0;
>  
> -     return 0;
> +     return c;
>  }
>  
>  static void restore_abort(struct termios *oldtrm) 
> diff -urNp suspend.org/splash.h suspend/splash.h
> --- suspend.org/splash.h      2007-05-12 23:37:47.000000000 +0300
> +++ suspend/splash.h  2007-07-20 18:29:42.000000000 +0300
> @@ -25,7 +25,7 @@ struct splash {
>       void (*read_password) (char *, int);
>       int (*dialog) (const char *);
>       int (*prepare_abort) (struct termios *, struct termios *);
> -     int (*key_pressed) (const char key);
> +     char (*key_pressed) (void);
>       void (*restore_abort) (struct termios *);
>  };
>  
> diff -urNp suspend.org/suspend.c suspend/suspend.c
> --- suspend.org/suspend.c     2007-05-13 23:16:53.000000000 +0300
> +++ suspend/suspend.c 2007-07-20 18:41:32.000000000 +0300
> @@ -489,11 +487,18 @@ static int save_image(struct swap_map_ha
>                       if (!(nr_pages % m)) {
>                               printf("\b\b\b\b%3d%%", nr_pages / m);
>                               splash.progress(20 + (nr_pages / m) * 0.75);
> -                             if (abort_possible && 
> -                                     splash.key_pressed(ABORT_KEY_CODE)) {
>  
> -                                     printf(" aborted!\n");
> -                                     return -EINTR;
> +                             switch (splash.key_pressed()) {
> +                                     case ABORT_KEY_CODE:
> +                                             if (abort_possible) {
> +                                                     printf(" aborted!\n");
> +                                                     return -EINTR;
> +                                             }
> +                                     break;
> +                                     case REBOOT_KEY_CODE:
> +                                             printf (" reboot 
> enabled\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
> +                                             strcpy (shutdown_method, 
> "reboot");

Apart from this you should also clear the PLATFORM_SUSPEND flag in the image
header.  Otherwise, resume will be confused if shutdown_method is originally
set to "platform".

> +                                     break;
>                               }
>                       }
>                       if (!(nr_pages % writeout_rate))
> diff -urNp suspend.org/swsusp.h suspend/swsusp.h
> --- suspend.org/swsusp.h      2007-03-16 18:02:23.000000000 +0200
> +++ suspend/swsusp.h  2007-07-20 18:33:42.000000000 +0300
> @@ -216,3 +216,5 @@ struct buf_block {
>  
>  #define ABORT_KEY_CODE       127
>  #define ABORT_KEY_NAME       "backspace"
> +#define REBOOT_KEY_CODE      'r'
> +#define REBOOT_KEY_NAME      "r"

Greetings,
Rafael


-- 
"Premature optimization is the root of all evil." - Donald Knuth

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Suspend-devel mailing list
Suspend-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/suspend-devel

Reply via email to