From 6503d551beb498b3a55e15492998992058be6406 Mon Sep 17 00:00:00 2001 From: Myun2 Date: Sun, 8 Aug 2010 15:25:22 +0900 Subject: [PATCH] =?utf8?q?eltorito.hpp:=20Boost=20Sector=E3=81=BE=E3=81=A7?= =?utf8?q?=E5=AE=9F=E8=A3=85=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- roast_ex/include/roast/file/iso9660/eltorito.hpp | 26 ++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/roast_ex/include/roast/file/iso9660/eltorito.hpp b/roast_ex/include/roast/file/iso9660/eltorito.hpp index c5eb4aa..3ac8cba 100644 --- a/roast_ex/include/roast/file/iso9660/eltorito.hpp +++ b/roast_ex/include/roast/file/iso9660/eltorito.hpp @@ -9,6 +9,7 @@ #include #include "roast/lexical/string_rule.hpp" #include "roast/math/endian.hpp" +#include "roast/memory/sized_ptr.hpp" namespace roast { @@ -87,11 +88,31 @@ namespace roast soft_repeat< unibyte<0>, 2048 - 0x2A > > boot_catalog_sector; + // Boot Sector + class boot_sector + { + public: + template + bool generate(_Strm& strm, sized_ptr& sp) + { + strm.write((const char*)sp.ptr, sp.size); + + for(int i=sp.size; i<2048; i++) + { + unibyte<0> ub; + if ( ub.generate(strm,sp) == false ) + return false; + } + return true; + } + }; + // rule typedef seq< soft_repeat< zero_padding_sector, _brvd_sector_no >, // Zero Padding 17 Sectors brvd_sector, // Boot Record Volume Descriptor Sector - boot_catalog_sector // Boot Catalog Sector + boot_catalog_sector, // Boot Catalog Sector + boot_sector > rule; >>>>>>> 63d7ba7... eltorito.hpp: とりあえず「Boot Record Volume Descriptor」の手前まで } @@ -108,7 +129,8 @@ namespace roast return false; eltorito::rule rl; - rl.generate(fs, boot_img); + if ( rl.generate(fs, sized_ptr((void*)boot_img,size) ) == false ) + return false; return true; } -- 2.11.0