# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: address@hidden # 4svg7kg0h5wznomh # target_branch: ../grub # testament_sha1: f50c3d62f277fc3bd9f0c90718283fb6e16c666d # timestamp: 2010-02-05 18:44:04 -0200 # base_revision_id: address@hidden # 8ff6d3xgumr490c7 # # Begin patch === modified file 'ChangeLog' --- ChangeLog 2010-02-05 19:33:09 +0000 +++ ChangeLog 2010-02-05 20:42:12 +0000 @@ -1,4 +1,9 @@ 2010-02-05 Manoel Rebelo Abranches + + Clean buffer of still unimplemented keys to prevent garbage to show up in the screen. + * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): New variable. + +2010-02-05 Manoel Rebelo Abranches * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Add some unimplemented keys. === modified file 'term/ieee1275/ofconsole.c' --- term/ieee1275/ofconsole.c 2010-02-05 19:33:09 +0000 +++ term/ieee1275/ofconsole.c 2010-02-05 20:42:12 +0000 @@ -152,7 +152,11 @@ grub_ofconsole_readkey (int *key) { char c; + char ctmp; grub_ssize_t actual = 0; + grub_ssize_t actualtmp = 0; + /*Indicates if we have a implemented key*/ + char implemented = 1; grub_ieee1275_read (stdin_ihandle, &c, 1, &actual); @@ -170,11 +174,14 @@ return 1; } - /*We expect the format \e[ in special keys. Anything else is just ignored.*/ if (c != 91 ) - return 0; + { + implemented = 0; + break; + } + + grub_ieee1275_read (stdin_ihandle, &c, 1, &actual); - grub_ieee1275_read (stdin_ihandle, &c, 1, &actual); if (actual <= 0) return 0; @@ -200,12 +207,24 @@ /* Left: Ctrl-b. */ c = 2; break; + default: + implemented = 0; + break; } break; } + /*Stores current state.*/ + ctmp = c; + actualtmp = actual; + /*Clean buffer.*/ + while(actual > 0 && !grub_ieee1275_read(stdin_ihandle, &c, 1, &actual)); + /*Return to previos state.*/ + c = ctmp; + actual = actualtmp; + *key = c; - return actual > 0; + return (actual > 0 && implemented); } static int # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWUGG1BEABgHfgFVwcff//34n noy////6YAnbvilAAAAAAAAAAABxkyaGIxNGARgJhAGAmmjTI0AxxkyaGIxNGARgJhAGAmmjTI0A wyommaJoADTRoAAAaAAAAAMKRTGJHqGmaQ000DQGTRoNNAGmgGgcZMmhiMTRgEYCYQBgJpo0yNAM FSSAQE0AmJhNNBTanpk1T09TBE9NDKY0yixJAWcSIJacIeKJGORITAaiokwZS7aKCqYCjDasxDC5 pU/2ZgQUQGS2JF3hu4KtKp/OXQqz1qIT6lEI6gcrkbiqeNMuWtOjbffz69znTBKS5Tkuz5OTfWLJ GVMqQs5V2qqWXtNMOmr6Y3ZZbeLfJDirfS3FYR07LSQuuklwmCUaipdFSqlV93dqeI/+P6f1GVDY pgVvEqcEboNkRmYpIpBIEJAcUFIUZfOHX2cuytXm/1ZerkM2bVe7KaVff13S6r3ZZhlsuxpbZ58t S6s82FbGWeF+6sL2a8ws1L2N/+XS536cy1RxJs7wO0LfIwUdYBiMGAonjmg3ZLaJYXzDPhlyj9K7 X7NTG+srtPz8eX/HM1tWmEcL2xTVKOWbVj00VovZuPVvxchmLsFjBbNsU/6Z656Ozw8LW9rxXLnm ed/e+qtWqvXjVenV2eN+Hpx7wvv9LwXkng5Ef7eCx0VKozqO2ppx0t6ur0FY092XuT3fSrRPbpUw jmNxmbTmPOuPOckckRrTEUeLvicZ1I8ZIxu6FbDxwrfara/9dPhpll7Kw28m29HBuimR65HV9UdR ak4c2i1rPDi1H2OYvvuG51OGsHBUuKvWRKEXU+wq0JR6V/K8uph6qGpobbojJWci62UTUimiYa4u aRPOP+IvXUPTQta0cKTRJO5ojbkjZDFji5UcXDd39vDVkprRxvwmK2iXTbi8bJe1sLt6hsY2nbm1 OO9US6r7tSYNrFyMmC58PQvbuPBy8dc3JruLhWW7CdKPqfJZEvdGRbaLRFpcMtzcs3WXNkyMm5Vm Jki9ffMVnRrTFdljuZNHIwsjnc/KwRfDTFizXvfgurlnFt4rnDNF7KJosvplx5MmvSJk3rk1LyyN KWVjK0Z6ZuJowZtG5o1P+cR5ol3FtqVstutpfgltd41NiphKYqTYvb3S3vNEo8i5N2rJTaxbHG5x ltzwLbm51qaFGvFJnh8sF4z0yVrWWbFzBfg3FtaNWrc1azkaNbQ3O8b+PRTRVb743ejFi3sd+u9s W66aHOzyw3uDbylXq0rbxyWuxanQpzROE8zY5nvRyXq49dTmythgpNSzi2VwWucyODXmvbWGjFi1 prUbFzg42q5cXZDmbNipo/b0D0I2THfq2bawaWsXOy7Jc53mbnDm15HBp9NHM2NznidpZHj0Yas+ SJ07utyxLs8EZIy42iyTIvXLuOzViyYsjk7Ow1c23oz6Pv+XwVyVXt997ibKaylNkmwchfwTohjp cyv8I2smrXfKztZe8atf6NNeietPUp1qFKPYo9q6H30cxrZuJSrlU9rynQpSl96rFlTf9Har4J2v gvZLGjbLly9UkXmuMIcWNFSqilv7ZPq+H1YDH9GS+/NmsmD9H8n6r0yqr2K67Lyu0c7fGCylvaUW hZPYWLnH/5y5SqjLHSxgncpOlqaFO95P39b3us/KSPtdroinvKWKcbxfT+TmqfcWMIfU6HKboeUY Q/ZOFRVTsTrXzFEnUj/SfCSLPn9rkD93dJuTWt88+f7LnK5VO99L6XzcTxdvdizeTW8nXI28FeZ/ NkXOt0HzWXKTidp5Fjg/NLJI/qf5r6/z/l657fxPnJGUX3ObB9BcXed73gucjmhzKNW3tf5XR0c/ fo555/U9zL3s2i8iZ54q9kcsMXik97K6YpK+FpdD2LW9tdDkef2Lol7fJg6mIucST2PFosyedv2/ lG9q/inSYFx2mPLJ6/2+B1f0ws+L4v3xk2qSeZHV9PGotVfX3OB0NPZyu83JvNujKpVXN+8tCjLu fE46iXy5xvvTifU622cKTTJvRx+CLzmcbH9exP+bk5Tu5IbXa2R0wslibJs6OC0dljlHSmV1pI5C pI1JswnRUR/11uLRH94oqM2o4OZbo9dcjyPJqR4NDsYxKXXc7NrSaMk7lT0u+JuT6J/Y9pynNSbv 4rtqc47hi2JgqFGv5xXwn9vyfWZ/Wfmj9InZ3PdRU77PmLvYTcfquTX7Y0nReRPjdm93Whd4exlX 1nlbqf4SfN/MsaHY4ffWie+2J3x7D4UNE/D8Mm4qNR6ocuno9q5i6UPXakOp3vtwj5P4GXZPSjmh xF6fAdEMcE9yVoo7U8o2C7XJF0az621Fwo9U9UNeeeL3r0fFFW9xuZTVJrNxZ7Isll6Zw8nU2GA6 FPBMntTCG6J+LNrvpjM10u1uF7rpMSkxKdSXJEuh/2xe6l65MmwsnzHHkk1pGVEpPw9fOnJHnjh5 JwdB9ClOM+1odx3pNUKaCzchxrJNm2SKFQwrcngjvuTP7+X1vu751L5I6/3vjh0x0u54DBMPloL+ uphDhs1TU1FO6SOpHyR0oudyq9JTXEqSjdC5El7uFoXdi5lgF+z31vm59C43qS5k26utLGpOBdfq F6L/xMS6j0yLJYee3nXSRUpoVCVxHmNzbJz9Em9L2tCxjmO9Jg99azHisue8pqR9o+X472mttrq4 vL085cZmJ4DM5VF7hewhyuBhQzfcakdN86bdJsXmTiVVo6pIvh++1PilRnQ4M0nAvOJJUj+HonM5 OOJvTdmav93vsMtjcmYtIcinupkvX/1Hs0iYyODatHSi5Y+gvXN+GEbd3LJ8Re4+7/f2v/xdyRTh QkEGG1BE