diff options
Diffstat (limited to 'devel/picprog/files/patch-hexfile.cc')
-rw-r--r-- | devel/picprog/files/patch-hexfile.cc | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/devel/picprog/files/patch-hexfile.cc b/devel/picprog/files/patch-hexfile.cc new file mode 100644 index 000000000000..a612a1393bd9 --- /dev/null +++ b/devel/picprog/files/patch-hexfile.cc @@ -0,0 +1,332 @@ +--- hexfile.cc.orig Tue Nov 19 12:33:41 2002 ++++ hexfile.cc Tue Nov 19 12:38:17 2002 +@@ -28,8 +28,8 @@ + + */ + +-#include <iostream.h> +-#include <iomanip.h> ++#include <iostream> ++#include <iomanip> + #include <sysexits.h> + #include <string.h> + #include <ctype.h> +@@ -50,7 +50,7 @@ + + int hexfile::load (const char *name) + { +- ifstream f(name); ++ std::ifstream f(name); + char buf [128]; + int line = 0; + enum formats format = unknown; +@@ -59,14 +59,14 @@ + + if (!f) { + e = errno; +- cerr << name << ":unable to load hexfile:" << strerror (e) << endl; ++ std::cerr << name << ":unable to load hexfile:" << strerror (e) << std::endl; + return EX_NOINPUT; + } + while (f.get (buf, sizeof (buf))) { + line++; + char c; + if (f.get (c) && '\n' != c) { +- cerr << name << ':' << line << ":long input line\n"; ++ std::cerr << name << ':' << line << ":long input line\n"; + return EX_DATAERR; + } + int len = strlen (buf); +@@ -85,7 +85,7 @@ + + if (i || ':' != buf [0] || 3 != (len & 3) || len < 15 + || '0' != buf [7] || '0' != buf [8]) { +- cerr << name << ':' << line << ":invalid input line\n"; ++ std::cerr << name << ':' << line << ":invalid input line\n"; + return EX_DATAERR; + } + check = strtol (buf + len - 2, 0, 16); +@@ -99,15 +99,15 @@ + else if (words * 2 + 11 == len) + format = ihx8m; + else { +- cerr << name << ':' << line << ++ std::cerr << name << ':' << line << + ":unknown input format, only ihx8m and ihx16 accepted\n"; + return EX_DATAERR; + } + } + if (words * (ihx16 == format ? 4 : 2) + 11 != len) { +- cerr << name << ':' << line << ":line length mismatch:" ++ std::cerr << name << ':' << line << ":line length mismatch:" + << (ihx16 == format ? "ihx16 " : "ihx8m ") +- << words * (ihx16 == format ? 4 : 2) + 11 << " != " << len << endl; ++ << words * (ihx16 == format ? 4 : 2) + 11 << " != " << len << std::endl; + return EX_DATAERR; + } + sum = words + addr + (addr >> 8); +@@ -120,8 +120,8 @@ + || (addr >= 0x2000 && addr+words <= 0x2004) + || (addr == 0x2007 && words == 1) + || (addr >= 0x2100 && addr+words <= 0x2140))) { +- cerr << name << ':' << line << ":invalid address " << hex +- << setw(4) << setfill('0') << addr << dec ++ std::cerr << name << ':' << line << ":invalid address " << std::hex ++ << std::setw(4) << std::setfill('0') << addr << std::dec + << ", possibly not a pic16c84 hex file?\n"; + return EX_DATAERR; + } +@@ -135,20 +135,20 @@ + pgm [addr + words] = word; + } + if (sum + check & 0xff) { +- cerr << name << ':' << line << ":checksum mismatch\n"; ++ std::cerr << name << ':' << line << ":checksum mismatch\n"; + return EX_DATAERR; + } + } + e = errno; + if (!f.eof ()) { +- cerr << name << ':' << line << ':' << strerror (e) << ":\n"; ++ std::cerr << name << ':' << line << ':' << strerror (e) << ":\n"; + return EX_IOERR; + } +- cerr << name << ':' << line << ":warning:unexpected eof\n"; ++ std::cerr << name << ':' << line << ":warning:unexpected eof\n"; + return EX_OK; + } + +-void hexfile::save_line (ofstream& f, int begin, int len, enum hexfile::formats format) const ++void hexfile::save_line (std::ofstream& f, int begin, int len, enum hexfile::formats format) const + { + int p_begin, p_len, sum, i; + +@@ -160,21 +160,21 @@ + p_len = len; + } + +- f << ':' << setw (2) << p_len << setw (4) << p_begin << "00"; ++ f << ':' << std::setw (2) << p_len << std::setw (4) << p_begin << "00"; + + sum = p_len + p_begin + (p_begin >> 8); + for (i = begin; i < begin + len; i++) { + int word = pgm [i]; + if (ihx8m == format) + word = (word & 0xff) << 8 | (word & 0xff00) >> 8; +- f << setw (4) << word; ++ f << std::setw (4) << word; + sum += word + (word >> 8); + } + +- f << setw (2) << (-sum & 0xff) << endl; ++ f << std::setw (2) << (-sum & 0xff) << std::endl; + } + +-void hexfile::save_region (ofstream& f, int addr, int end, enum hexfile::formats format, bool skip_ones) const ++void hexfile::save_region (std::ofstream& f, int addr, int end, enum hexfile::formats format, bool skip_ones) const + { + int len; + +@@ -201,15 +201,15 @@ + + int hexfile::save (const char *name, enum hexfile::formats format, bool skip_ones) const + { +- ofstream f (name); ++ std::ofstream f (name); + int e; + + if (!f) { + e = errno; +- cerr << name << ":unable to open save file:" << strerror (e) << endl; ++ std::cerr << name << ":unable to open save file:" << strerror (e) << std::endl; + return EX_IOERR; + } +- f << hex << setfill ('0') << setiosflags (ios::uppercase); ++ f << std::hex << std::setfill ('0') << setiosflags (std::ios::uppercase); + + save_region (f, 0, 0x400, format, skip_ones); + save_region (f, 0x2000, 0x2004, format, skip_ones); +@@ -236,24 +236,24 @@ + && (retval = pic.command (data ? picport::data_from_data + : picport::data_from_prog)) != pgm [addr]) { + if (-1 == retval) { +- cerr << pic.port() << ':' << hex << setfill ('0') << setw (4) << addr +- << dec << ":unable to read pic while programming\n"; ++ std::cerr << pic.port() << ':' << std::hex << std::setfill ('0') << std::setw (4) << addr ++ << std::dec << ":unable to read pic while programming\n"; + return EX_IOERR; + } + pic.command (data ? picport::data_for_data : picport::data_for_prog, + pgm [addr]); + pic.command (picport::beg_prog); + +- cout << hex << setfill ('0') << setw (4) << addr << ' ' +- << setw (4) << pic.address () << ' ' +- << setw (4) << pgm [addr] << dec << endl; ++ std::cout << std::hex << std::setfill ('0') << std::setw (4) << addr << ' ' ++ << std::setw (4) << pic.address () << ' ' ++ << std::setw (4) << pgm [addr] << std::dec << std::endl; + + // verify, but do not verify fuses if Code Protect bit is cleared! + + if ((pic.address () != 0x2007 || pgm [addr] & 0x10) + && pgm [addr] != pic.command (data ? picport::data_from_data + : picport::data_from_prog)) { +- cerr << pic.port() << ':' << hex << setw (4) << setfill ('0') << addr << dec ++ std::cerr << pic.port() << ':' << std::hex << std::setw (4) << std::setfill ('0') << addr << std::dec + << ":unable to verify pic while programming.\n" + "Is code protection enabled? " + "Use --erase option to disable code protection.\n"; +@@ -280,21 +280,21 @@ + if (reset) { + pic.reset_code_protection (); + pic.reset (); +- cout << "Removed code protection.\n"; ++ std::cout << "Removed code protection.\n"; + } + +- cout << "Burning program eeprom,\n"; ++ std::cout << "Burning program eeprom,\n"; + while (pic.address () < 0x400) { + if (EX_OK != (retval = program_location (pic, pic.address (), false))) + return retval; + pic.command (picport::inc_addr); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + } + +- cout << "burning data eeprom,\n"; ++ std::cout << "burning data eeprom,\n"; + while (pic.address () < 0x440) { + if (EX_OK != (retval = program_location (pic, + pic.address () + 0x2100 - 0x400, +@@ -302,19 +302,19 @@ + return retval; + pic.command (picport::inc_addr); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + } + +- cout << "burning id words,\n"; ++ std::cout << "burning id words,\n"; + pic.command (picport::load_conf, 0x3fff); // dummy value + while (pic.address () < 0x2004) { + if (EX_OK != (retval = program_location (pic, pic.address (), false))) + return retval; + pic.command (picport::inc_addr); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + } +@@ -323,17 +323,17 @@ + pic.command (picport::inc_addr); + pic.command (picport::inc_addr); + +- cout << "burning fuses,\n"; ++ std::cout << "burning fuses,\n"; + if (EX_OK != (retval = program_location (pic, pic.address (), false))) + return retval; +- cout << "done.\n"; ++ std::cout << "done.\n"; + } // scope of pic + + signal (SIGTERM, save_t); + signal (SIGQUIT, save_q); + signal (SIGINT, save_i); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + +@@ -352,47 +352,47 @@ + { + picport pic (port); + +- cout << "Reading program eeprom,\n"; ++ std::cout << "Reading program eeprom,\n"; + while (pic.address () < 0x400) { + if (-1 == (pgm [pic.address ()] = pic.command (picport::data_from_prog))) { +- cerr << port << ':' << hex << setfill ('0') << setw (4) << pic.address () << dec ++ std::cerr << port << ':' << std::hex << std::setfill ('0') << std::setw (4) << pic.address () << std::dec + << ":unable to read pic\n"; + return EX_IOERR; + } + pic.command (picport::inc_addr); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + } + +- cout << "reading data eeprom,\n"; ++ std::cout << "reading data eeprom,\n"; + while (pic.address () < 0x440) { + if (-1 == (pgm [pic.address () + 0x2100-0x400] + = pic.command (picport::data_from_data))) { +- cerr << port << ':' << hex << setfill ('0') << setw (4) +- << pic.address () + 0x2100-0x400 << dec ++ std::cerr << port << ':' << std::hex << std::setfill ('0') << std::setw (4) ++ << pic.address () + 0x2100-0x400 << std::dec + << ":unable to read pic data memory\n"; + return EX_IOERR; + } + pic.command (picport::inc_addr); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + } + pic.command (picport::load_conf, 0); + +- cout << "reading id words,\n"; ++ std::cout << "reading id words,\n"; + while (pic.address () < 0x2004) { + if (-1 == (pgm [pic.address ()] = pic.command (picport::data_from_prog))) { +- cerr << port << ':' << hex << setfill ('0') << setw (4) << pic.address () << dec ++ std::cerr << port << ':' << std::hex << std::setfill ('0') << std::setw (4) << pic.address () << std::dec + << ":unable to read pic id words\n"; + return EX_IOERR; + } + pic.command (picport::inc_addr); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + } +@@ -402,20 +402,20 @@ + pic.command (picport::inc_addr); + + // fuses +- cout << "reading fuses,\n"; ++ std::cout << "reading fuses,\n"; + if (-1 == (pgm [pic.address ()] = pic.command (picport::data_from_prog))) { +- cerr << port << ':' << hex << setfill ('0') << setw (4) << pic.address () << dec ++ std::cerr << port << ':' << std::hex << std::setfill ('0') << std::setw (4) << pic.address () << std::dec + << ":unable to read pic fuses\n"; + return EX_IOERR; + } +- cout << "done.\n"; ++ std::cout << "done.\n"; + } // pic scope + + signal (SIGTERM, save_t); + signal (SIGQUIT, save_q); + signal (SIGINT, save_i); + if (got_signal) { +- cerr << "Exiting.\n"; ++ std::cerr << "Exiting.\n"; + return EX_UNAVAILABLE; + } + |