📄 write_image.c.htm
字号:
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"><head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <meta name="generator" content="OpenGrok v0.6beta (5cad370c5aab)"/> <link rel="icon" href="/source/default/img/icon.png" type="image/png"/> <link rel="stylesheet" type="text/css" href="/source/default/style.css"/> <link rel="stylesheet" type="text/css" href="/source/default/print.css" media="print" /> <link rel="alternate stylesheet" type="text/css" media="all" title="Paper White" href="/source/default/print.css"/> <title>Cross Reference: /onnv/onnv-gate/usr/src/cmd/cdrw/write_image.c</title><script type="text/javascript"><!--function toggle_annotations() { var spans = document.getElementsByTagName("span"); for (var i = 0; i < spans.length; i++) { var span = spans[i]; if (span.className == 'blame') { span.className = 'blame-hidden'; } else if (span.className == 'blame-hidden') { span.className = 'blame'; } }}// --></script><style type="text/css"> div#Iconbar a { font-size: 11px; color: #444; text-decoration: none; background-position: 50% 0%; background-repeat: no-repeat; display: block; float: left; margin: 0 0.6em; padding-top: 34px;}div#Iconbar a#DiscussionsIcon { background-image: url(http://www.opensolaris.org/images/discussions.gif);}div#Iconbar a#CommunitiesIcon { background-image: url(http://www.opensolaris.org/images/communities.gif);}div#Iconbar a#ProjectsIcon { background-image: url(http://www.opensolaris.org/images/projects.gif);}div#Iconbar a#DownloadIcon { background-image: url(http://www.opensolaris.org/images/download.gif);}div#Iconbar a#SourceBrowserIcon { background-image: url(http://www.opensolaris.org/images/srcbrowse.gif);}</style></head><body><div id="page"><form action="/source/search"> <div id="header"><div id="MastheadLogo"><a id="MastheadLogo" href="http://www.opensolaris.org"></a></div> <div id="pagetitle"><b id="filename">Cross Reference: write_image.c</b><br/></div> </div><div id="Masthead"><tt><a href="/source/xref/">xref</a>: /<a href="/source/xref/onnv/">onnv</a>/<a href="/source/xref/onnv/onnv-gate/">onnv-gate</a>/<a href="/source/xref/onnv/onnv-gate/usr/">usr</a>/<a href="/source/xref/onnv/onnv-gate/usr/src/">src</a>/<a href="/source/xref/onnv/onnv-gate/usr/src/cmd/">cmd</a>/<a href="/source/xref/onnv/onnv-gate/usr/src/cmd/cdrw/">cdrw</a>/<a href="/source/xref/onnv/onnv-gate/usr/src/cmd/cdrw/write_image.c">write_image.c</a></tt></div> <div id="bar"><a href="/source" id="home">Home</a> | <a id="history" href="/source/history/onnv/onnv-gate/usr/src/cmd/cdrw/write_image.c">History</a> | <a href="/source/xref/onnv/onnv-gate/usr/src/cmd/cdrw/write_image.c?a=true">Annotate</a> | <a id="download" href="/source/raw/onnv/onnv-gate/usr/src/cmd/cdrw/write_image.c">Download</a> | <input id="search" name="q" class="q"/><input type="submit" value="Search" class="submit"/><input type="checkbox" name="path" value="/onnv/onnv-gate/usr/src/cmd/cdrw"/> only in <b>cdrw</b></div></form><div id="src"><pre><a class="l" name="1"> 1 </a><span class="c">/*<a class="l" name="2"> 2 </a> * CDDL HEADER START<a class="l" name="3"> 3 </a> *<a class="l" name="4"> 4 </a> * The contents of this file are subject to the terms of the<a class="l" name="5"> 5 </a> * Common Development and Distribution License (the "License").<a class="l" name="6"> 6 </a> * You may not use this file except in compliance with the License.<a class="l" name="7"> 7 </a> *<a class="l" name="8"> 8 </a> * You can obtain a copy of the license at <a href="/source/s?path=usr/">usr</a>/<a href="/source/s?path=usr/src/">src</a>/<a href="/source/s?path=usr/src/OPENSOLARIS.LICENSE">OPENSOLARIS.LICENSE</a><a class="l" name="9"> 9 </a> * or <a href="http://www.opensolaris.org/os/licensing">http://www.opensolaris.org/os/licensing</a>.<a class="hl" name="10"> 10 </a> * See the License for the specific language governing permissions<a class="l" name="11"> 11 </a> * and limitations under the License.<a class="l" name="12"> 12 </a> *<a class="l" name="13"> 13 </a> * When distributing Covered Code, include this CDDL HEADER in each<a class="l" name="14"> 14 </a> * file and include the License file at <a href="/source/s?path=usr/">usr</a>/<a href="/source/s?path=usr/src/">src</a>/<a href="/source/s?path=usr/src/OPENSOLARIS.LICENSE">OPENSOLARIS.LICENSE</a>.<a class="l" name="15"> 15 </a> * If applicable, add the following below this CDDL HEADER, with the<a class="l" name="16"> 16 </a> * fields enclosed by brackets "[]" replaced with your own identifying<a class="l" name="17"> 17 </a> * information: Portions Copyright [yyyy] [name of copyright owner]<a class="l" name="18"> 18 </a> *<a class="l" name="19"> 19 </a> * CDDL HEADER END<a class="hl" name="20"> 20 </a> */</span><a class="l" name="21"> 21 </a><span class="c">/*<a class="l" name="22"> 22 </a> * Copyright 2008 Sun Microsystems, Inc. All rights reserved.<a class="l" name="23"> 23 </a> * Use is subject to license terms.<a class="l" name="24"> 24 </a> */</span><a class="l" name="25"> 25 </a><a class="l" name="26"> 26 </a>#<b>pragma</b> <b>ident</b> <span class="s">"%Z%%M% %I% %E% SMI"</span><a class="l" name="27"> 27 </a><a class="l" name="28"> 28 </a>#<b>include</b> <<a href="/source/s?path=sys/types.h">sys/types.h</a>><a class="l" name="29"> 29 </a>#<b>include</b> <<a href="/source/s?path=stdlib.h">stdlib.h</a>><a class="hl" name="30"> 30 </a>#<b>include</b> <<a href="/source/s?path=libintl.h">libintl.h</a>><a class="l" name="31"> 31 </a>#<b>include</b> <<a href="/source/s?path=unistd.h">unistd.h</a>><a class="l" name="32"> 32 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=trackio.h">trackio.h</a>"</span><a class="l" name="33"> 33 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=main.h">main.h</a>"</span><a class="l" name="34"> 34 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=util.h">util.h</a>"</span><a class="l" name="35"> 35 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=bstream.h">bstream.h</a>"</span><a class="l" name="36"> 36 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=misc_scsi.h">misc_scsi.h</a>"</span><a class="l" name="37"> 37 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=msgs.h">msgs.h</a>"</span><a class="l" name="38"> 38 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=device.h">device.h</a>"</span><a class="l" name="39"> 39 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=mmc.h">mmc.h</a>"</span><a class="hl" name="40"> 40 </a>#<b>include</b> <span class="s">"<a href="/source/s?path=transport.h">transport.h</a>"</span><a class="l" name="41"> 41 </a><a class="l" name="42"> 42 </a><b>void</b><a class="l" name="43"> 43 </a><a href="/source/s?defs=write_image">write_image</a>(<b>void</b>)<a class="l" name="44"> 44 </a>{<a class="l" name="45"> 45 </a> <a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h;<a class="l" name="46"> 46 </a> <a href="/source/s?defs=off_t">off_t</a> <a href="/source/s?defs=size">size</a>;<a class="l" name="47"> 47 </a> <b>int</b> <a href="/source/s?defs=no_size">no_size</a>, <a href="/source/s?defs=ret">ret</a>;<a class="l" name="48"> 48 </a><a class="l" name="49"> 49 </a> <a href="/source/s?defs=get_media_type">get_media_type</a>(<a href="/source/s?defs=target">target</a>-><a href="/source/s?defs=d_fd">d_fd</a>);<a class="hl" name="50"> 50 </a><a class="l" name="51"> 51 </a> <span class="c">/* DVD+RW does not have blanking and can be overwritten */</span><a class="l" name="52"> 52 </a> <b>if</b> (<a href="/source/s?defs=device_type">device_type</a> != <a href="/source/s?defs=DVD_PLUS_W">DVD_PLUS_W</a>) {<a class="l" name="53"> 53 </a> (<b>void</b>) <a href="/source/s?defs=check_device">check_device</a>(<a href="/source/s?defs=target">target</a>, <a href="/source/s?defs=CHECK_DEVICE_NOT_READY">CHECK_DEVICE_NOT_READY</a> |<a class="l" name="54"> 54 </a> <a href="/source/s?defs=CHECK_DEVICE_NOT_WRITABLE">CHECK_DEVICE_NOT_WRITABLE</a> | <a href="/source/s?defs=CHECK_MEDIA_IS_NOT_WRITABLE">CHECK_MEDIA_IS_NOT_WRITABLE</a> |<a class="l" name="55"> 55 </a> <a href="/source/s?defs=EXIT_IF_CHECK_FAILED">EXIT_IF_CHECK_FAILED</a>);<a class="l" name="56"> 56 </a> } <b>else</b> {<a class="l" name="57"> 57 </a> (<b>void</b>) <a href="/source/s?defs=check_device">check_device</a>(<a href="/source/s?defs=target">target</a>, <a href="/source/s?defs=CHECK_DEVICE_NOT_READY">CHECK_DEVICE_NOT_READY</a> |<a class="l" name="58"> 58 </a> <a href="/source/s?defs=EXIT_IF_CHECK_FAILED">EXIT_IF_CHECK_FAILED</a>);<a class="l" name="59"> 59 </a> }<a class="hl" name="60"> 60 </a><a class="l" name="61"> 61 </a> <span class="c">/*<a class="l" name="62"> 62 </a> * Simulation writing can't happen on DVD+RW's<a class="l" name="63"> 63 </a> * or DVD+R's. According to the MMC spec this<a class="l" name="64"> 64 </a> * operation is not supported. So we should<a class="l" name="65"> 65 </a> * bail out if the user tries to do a simulation<a class="l" name="66"> 66 </a> * write.<a class="l" name="67"> 67 </a> */</span><a class="l" name="68"> 68 </a> <b>if</b> (<a href="/source/s?defs=simulation">simulation</a> && (<a href="/source/s?defs=device_type">device_type</a> == <a href="/source/s?defs=DVD_PLUS_W">DVD_PLUS_W</a> ||<a class="l" name="69"> 69 </a> <a href="/source/s?defs=device_type">device_type</a> == <a href="/source/s?defs=DVD_PLUS">DVD_PLUS</a>)) {<a class="hl" name="70"> 70 </a> <a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Media does not support simulated writing.\n"</span>));<a class="l" name="71"> 71 </a> <a href="/source/s?defs=exit">exit</a>(<span class="n">1</span>);<a class="l" name="72"> 72 </a> }<a class="l" name="73"> 73 </a><a class="l" name="74"> 74 </a> <a href="/source/s?defs=write_init">write_init</a>(<a href="/source/s?defs=TRACK_MODE_DATA">TRACK_MODE_DATA</a>);<a class="l" name="75"> 75 </a><a class="l" name="76"> 76 </a> <b>if</b> (<a href="/source/s?defs=image_file">image_file</a>) {<a class="l" name="77"> 77 </a> h = <a href="/source/s?defs=open_iso_read_stream">open_iso_read_stream</a>(<a href="/source/s?defs=image_file">image_file</a>);<a class="l" name="78"> 78 </a> } <b>else</b> {<a class="l" name="79"> 79 </a> h = <a href="/source/s?defs=open_stdin_read_stream">open_stdin_read_stream</a>();<a class="hl" name="80"> 80 </a> }<a class="l" name="81"> 81 </a><a class="l" name="82"> 82 </a> <b>if</b> (h == <a href="/source/s?defs=NULL">NULL</a>) {<a class="l" name="83"> 83 </a> <a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<span class="s">"Cannot open %s: %s\n"</span>),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -