]> git.proxmox.com Git - proxmox-backup.git/commitdiff
typo fixes all over the place
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Sat, 30 May 2020 14:37:33 +0000 (16:37 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Sat, 30 May 2020 14:39:08 +0000 (16:39 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
29 files changed:
src/api2/backup.rs
src/api2/backup/environment.rs
src/api2/node/network.rs
src/api2/node/services.rs
src/api2/reader.rs
src/api2/types.rs
src/backup/data_blob.rs
src/bin/completion.rs
src/bin/dynamic-files.rs
src/bin/proxmox-backup-client.rs
src/bin/proxmox_backup_manager/cert.rs
src/client/backup_reader.rs
src/client/http_client.rs
src/client/pull.rs
src/config/network.rs
src/pxar.rs
src/pxar/binary_search_tree.rs
src/pxar/encoder.rs
src/pxar/format_definition.rs
src/pxar/match_pattern.rs
src/pxar/sequential_decoder.rs
src/server/worker_task.rs
src/tools.rs
src/tools/broadcast_future.rs
src/tools/file_logger.rs
src/tools/fs.rs
src/tools/process_locker.rs
src/tools/ticket.rs
www/DataStoreContent.js

index 3c9cfd87ade82d09848bc7cc555d1c8fa75608ff..fc5fd691b1ed16e84da94206f5608abc66db24af 100644 (file)
@@ -107,7 +107,7 @@ async move {
     }
 
     let (path, is_new) = datastore.create_backup_dir(&backup_dir)?;
-    if !is_new { bail!("backup directorty already exists."); }
+    if !is_new { bail!("backup directory already exists."); }
 
     WorkerTask::spawn("backup", Some(worker_id), &username.clone(), true, move |worker| {
         let mut env = BackupEnvironment::new(
@@ -151,7 +151,7 @@ async move {
 
             match (res, env.ensure_finished()) {
                 (Ok(_), Ok(())) => {
-                    env.log("backup finished sucessfully");
+                    env.log("backup finished successfully");
                     Ok(())
                 },
                 (Err(err), Ok(())) => {
@@ -378,7 +378,7 @@ fn dynamic_append (
 
         env.dynamic_writer_append_chunk(wid, offset, size, &digest)?;
 
-        env.debug(format!("sucessfully added chunk {} to dynamic index {} (offset {}, size {})", digest_str, wid, offset, size));
+        env.debug(format!("successfully added chunk {} to dynamic index {} (offset {}, size {})", digest_str, wid, offset, size));
     }
 
     Ok(Value::Null)
@@ -443,7 +443,7 @@ fn fixed_append (
 
         env.fixed_writer_append_chunk(wid, offset, size, &digest)?;
 
-        env.debug(format!("sucessfully added chunk {} to fixed index {} (offset {}, size {})", digest_str, wid, offset, size));
+        env.debug(format!("successfully added chunk {} to fixed index {} (offset {}, size {})", digest_str, wid, offset, size));
     }
 
     Ok(Value::Null)
@@ -498,7 +498,7 @@ fn close_dynamic_index (
 
     env.dynamic_writer_close(wid, chunk_count, size, csum)?;
 
-    env.log(format!("sucessfully closed dynamic index {}", wid));
+    env.log(format!("successfully closed dynamic index {}", wid));
 
     Ok(Value::Null)
 }
@@ -552,7 +552,7 @@ fn close_fixed_index (
 
     env.fixed_writer_close(wid, chunk_count, size, csum)?;
 
-    env.log(format!("sucessfully closed fixed index {}", wid));
+    env.log(format!("successfully closed fixed index {}", wid));
 
     Ok(Value::Null)
 }
@@ -566,7 +566,7 @@ fn finish_backup (
     let env: &BackupEnvironment = rpcenv.as_ref();
 
     env.finish_backup()?;
-    env.log("sucessfully finished backup");
+    env.log("successfully finished backup");
 
     Ok(Value::Null)
 }
index 08c2cdc9a76998c115b486d8b2583be84dda9c53..34d08333943c2020d69b156e2164129e1d9b9855 100644 (file)
@@ -52,7 +52,7 @@ struct FixedWriterState {
 struct SharedBackupState {
     finished: bool,
     uid_counter: usize,
-    file_counter: usize, // sucessfully uploaded files
+    file_counter: usize, // successfully uploaded files
     dynamic_writers: HashMap<usize, DynamicWriterState>,
     fixed_writers: HashMap<usize, FixedWriterState>,
     known_chunks: HashMap<[u8;32], u32>,
index 352be4019b1822d146a3429f97d3b351904fbd62..c0c55333481f4eb1581a8f1bc6783ce78d390f57 100644 (file)
@@ -338,7 +338,7 @@ pub enum DeletableProperty {
     autostart,
     /// Delete bridge ports (set to 'none')
     bridge_ports,
-    /// Delet bridge-vlan-aware flag
+    /// Delete bridge-vlan-aware flag
     bridge_vlan_aware,
     /// Delete bond-slaves (set to 'none')
     slaves,
index 9a6b6f9313f25988dfdacfa67d69f3176ca83260..b0cca76ef610876935431b15d427b3da1139aa01 100644 (file)
@@ -256,7 +256,7 @@ fn stop_service(
     _param: Value,
  ) -> Result<Value, Error> {
 
-    log::info!("stoping service {}", service);
+    log::info!("stopping service {}", service);
 
     run_service_command(&service, "stop")
 }
index cb0001535ef1c447b83179c8d7d33869ef03bb00..a6aed505bba3ceb1f92545e97c3e3b87ed724ab6 100644 (file)
@@ -131,7 +131,7 @@ fn upgrade_to_backup_reader_protocol(
                     Either::Right((Ok(res), _)) => Ok(res),
                     Either::Right((Err(err), _)) => Err(err),
                 })
-                .map_ok(move |_| env.log("reader finished sucessfully"))
+                .map_ok(move |_| env.log("reader finished successfully"))
         })?;
 
         let response = Response::builder()
index 81b39ad5a7f9ef8fc4b6971caa468757db9b0c86..e613714b470f3529362ac180fbfd697ab050e589 100644 (file)
@@ -822,7 +822,7 @@ fn test_cert_fingerprint_schema() -> Result<(), anyhow::Error> {
 
     for fingerprint in invalid_fingerprints.iter() {
         if let Ok(_) = parse_simple_value(fingerprint, &schema) {
-            bail!("test fingerprint '{}' failed -  got Ok() while expection an error.", fingerprint);
+            bail!("test fingerprint '{}' failed -  got Ok() while exception an error.", fingerprint);
         }
     }
 
@@ -866,7 +866,7 @@ fn test_proxmox_user_id_schema() -> Result<(), anyhow::Error> {
 
     for name in invalid_user_ids.iter() {
         if let Ok(_) = parse_simple_value(name, &schema) {
-            bail!("test userid '{}' failed -  got Ok() while expection an error.", name);
+            bail!("test userid '{}' failed -  got Ok() while exception an error.", name);
         }
     }
 
index 03bbfec9aef93775e7ce78ffe811c67c87b83d18..0886cc86f4d0f1307f06b88c54cf728219eb5716 100644 (file)
@@ -311,7 +311,7 @@ impl DataBlob {
     /// Verify digest and data length for unencrypted chunks.
     ///
     /// To do that, we need to decompress data first. Please note that
-    /// this is noth possible for encrypted chunks.
+    /// this is north possible for encrypted chunks.
     pub fn verify_unencrypted(
         &self,
         expected_chunk_size: usize,
index c1c3b69af7fb1467e0e833cc5cdab6f00a56d0d6..316dd0dc9070062232a4a6ab462b01e51e39dada 100644 (file)
@@ -49,7 +49,7 @@ fn hello_command(
 }
 
 #[api(input: { properties: {} })]
-/// Quit command. Exit the programm.
+/// Quit command. Exit the program.
 ///
 /// Returns: nothing
 fn quit_command() -> Result<(), Error> {
index 9d001f5c90bb9f053d42be0a952b07cf5ef0a434..8338dee2c7fff67f38fe280b00b86d4075a49467 100644 (file)
@@ -16,7 +16,7 @@ use std::io::Write;
 // tar: dyntest1/testfile7.dat: File shrank by 2833252864 bytes; padding with zeros
 
 // # pxar create test.pxar ./dyntest1/
-// Error: detected shrinked file "./dyntest1/testfile0.dat" (22020096 < 12679380992)
+// Error: detected shrunk file "./dyntest1/testfile0.dat" (22020096 < 12679380992)
 
 fn create_large_file(path: PathBuf) {
 
index a87256a5e45469937903f95fc5d5a4e7d0041e5d..f294aef9da7b45bb3ffaf6f09b5da33eb050438a 100644 (file)
@@ -2000,7 +2000,7 @@ async fn mount_do(param: Value, pipe: Option<RawFd>) -> Result<Value, Error> {
 
         if let Some(pipe) = pipe {
             nix::unistd::chdir(Path::new("/")).unwrap();
-            // Finish creation of deamon by redirecting filedescriptors.
+            // Finish creation of daemon by redirecting filedescriptors.
             let nullfd = nix::fcntl::open(
                 "/dev/null",
                 nix::fcntl::OFlag::O_RDWR,
index fd4882c7b29d67a99fb65189a5cfcb96dd89acd1..f5f725a378528858cda6136258c4a60c0a15ea01 100644 (file)
@@ -17,7 +17,7 @@ fn x509name_to_string(name: &openssl::x509::X509NameRef) -> Result<String, Error
 }
 
 #[api]
-/// Diplay node certificate information.
+/// Display node certificate information.
 fn cert_info() -> Result<(), Error> {
 
     let cert_path = PathBuf::from(configdir!("/proxy.pem"));
index f7310134505fc980af0556032d35c70c64a37237..d4f60ed015a7985a8db51ca3c7354dcfd8fc4b26 100644 (file)
@@ -138,7 +138,7 @@ impl BackupReader {
 
     /// Download a .blob file
     ///
-    /// This creates a temorary file in /tmp (using O_TMPFILE). The data is verified using
+    /// This creates a temporary file in /tmp (using O_TMPFILE). The data is verified using
     /// the provided manifest.
     pub async fn download_blob(
         &self,
@@ -164,7 +164,7 @@ impl BackupReader {
 
     /// Download dynamic index file
     ///
-    /// This creates a temorary file in /tmp (using O_TMPFILE). The index is verified using
+    /// This creates a temporary file in /tmp (using O_TMPFILE). The index is verified using
     /// the provided manifest.
     pub async fn download_dynamic_index(
         &self,
@@ -192,7 +192,7 @@ impl BackupReader {
 
     /// Download fixed index file
     ///
-    /// This creates a temorary file in /tmp (using O_TMPFILE). The index is verified using
+    /// This creates a temporary file in /tmp (using O_TMPFILE). The index is verified using
     /// the provided manifest.
     pub async fn download_fixed_index(
         &self,
index ede41eda616d63a5d43022931b2881e26217332f..23c4aa54a2803294fbf19a9a5d9adbb59ba3482c 100644 (file)
@@ -343,7 +343,7 @@ impl HttpClient {
 
     /// Login
     ///
-    /// Login is done on demand, so this is onyl required if you need
+    /// Login is done on demand, so this is only required if you need
     /// access to authentication data in 'AuthInfo'.
     pub async fn login(&self) -> Result<AuthInfo, Error> {
         self.auth.listen().await
index 378f400c1836aff0dc1590134e2281fe43bbd80e..87904360b18374e1da702d56c5cc61e7a8b4a135 100644 (file)
@@ -123,12 +123,12 @@ async fn try_client_log_download(
         .read(true)
         .open(&tmp_path)?;
 
-    // Note: be silent if there is no log - only log sucessful download
+    // Note: be silent if there is no log - only log successful download
     if let Ok(_) = reader.download(CLIENT_LOG_BLOB_NAME, tmpfile).await {
         if let Err(err) = std::fs::rename(&tmp_path, &path) {
             bail!("Atomic rename file {:?} failed - {}", path, err);
         }
-        worker.log(format!("got bakup log file {:?}", CLIENT_LOG_BLOB_NAME));
+        worker.log(format!("got backup log file {:?}", CLIENT_LOG_BLOB_NAME));
     }
 
     Ok(())
index 6527cf64970635a80cca4424a29c76740fd20abc..c217141f79f4ff7ad1a5b2d1e4081fccf6d075bd 100644 (file)
@@ -149,7 +149,7 @@ impl Interface {
         Ok(())
     }
 
-    /// Write attributes not dependening on address family
+    /// Write attributes not depending on address family
     fn write_iface_attributes(&self, w: &mut dyn Write) -> Result<(), Error> {
 
         static EMPTY_LIST: Vec<String> = Vec::new();
@@ -187,7 +187,7 @@ impl Interface {
         Ok(())
     }
 
-    /// Write attributes dependening on address family inet (IPv4)
+    /// Write attributes depending on address family inet (IPv4)
     fn write_iface_attributes_v4(&self, w: &mut dyn Write, method: NetworkConfigMethod) -> Result<(), Error> {
         if method == NetworkConfigMethod::Static {
             if let Some(address) = &self.cidr {
@@ -211,7 +211,7 @@ impl Interface {
         Ok(())
     }
 
-    /// Write attributes dependening on address family inet6 (IPv6)
+    /// Write attributes depending on address family inet6 (IPv6)
     fn write_iface_attributes_v6(&self, w: &mut dyn Write, method: NetworkConfigMethod) -> Result<(), Error> {
         if method == NetworkConfigMethod::Static {
             if let Some(address) = &self.cidr6 {
index 0696fd0b25df2f75337ab8a4fe6f187e427892f8..07b7c2c5eb4e028c2049507c293a44af603bcd88 100644 (file)
@@ -4,7 +4,7 @@
 //! format used in the [casync](https://github.com/systemd/casync)
 //! toolkit (we are not 100\% binary compatible). It is a file archive
 //! format defined by 'Lennart Poettering', specially defined for
-//! efficent deduplication.
+//! efficient deduplication.
 
 //! Every archive contains items in the following order:
 //!  * `ENTRY`              -- containing general stat() data and related bits
index 8865881bba44782caaebdf7f674a8a9de17f6131..63a1d3fa43f068d4a18cfb5cc2a1fd87c7df3dc2 100644 (file)
@@ -61,7 +61,7 @@ fn copy_binary_search_tree_inner<F:  FnMut(usize, usize)>(
     }
 }
 
-/// This function calls the provided `copy_func()` with the permutaion
+/// This function calls the provided `copy_func()` with the permutation
 /// info.
 ///
 /// ```
@@ -71,7 +71,7 @@ fn copy_binary_search_tree_inner<F:  FnMut(usize, usize)>(
 /// });
 /// ```
 ///
-/// This will produce the folowing output:
+/// This will produce the following output:
 ///
 /// ```no-compile
 /// Copy 3 to 0
@@ -81,7 +81,7 @@ fn copy_binary_search_tree_inner<F:  FnMut(usize, usize)>(
 /// Copy 4 to 2
 /// ```
 ///
-/// So this generates the following permuation: `[3,1,4,0,2]`.
+/// So this generates the following permutation: `[3,1,4,0,2]`.
 
 pub fn copy_binary_search_tree<F:  FnMut(usize, usize)>(
     n: usize,
index bb0d0d208a61c43b8ee5540a4af3f532344d5fd7..f438e39a7ff5e0c78b189f62f82e3b9dfb5a04c3 100644 (file)
@@ -1117,7 +1117,7 @@ impl<'a, W: Write, C: BackupCatalogWriter> Encoder<'a, W, C> {
                 if pos != size {
                     // Note:: casync format cannot handle that
                     bail!(
-                        "detected shrinked file {:?} ({} < {})",
+                        "detected shrunk file {:?} ({} < {})",
                         self.full_path(),
                         pos,
                         size
index 02ea421f41efbdd9142cebae4d8c95182189c4d1..206d3beba2a1f925ab48548f4ee58e5ad97516b4 100644 (file)
@@ -29,7 +29,7 @@ pub const PXAR_QUOTA_PROJID: u64 = 0x161baf2d8772a72b;
 /// Marks item as hardlink
 /// compute_goodbye_hash(b"__PROXMOX_FORMAT_HARDLINK__");
 pub const PXAR_FORMAT_HARDLINK: u64 = 0x2c5e06f634f65b86;
-/// Marks the beginnig of the payload (actual content) of regular files
+/// Marks the beginning of the payload (actual content) of regular files
 pub const PXAR_PAYLOAD: u64 = 0x8b9e1d93d6dcffc9;
 /// Marks item as entry of goodbye table
 pub const PXAR_GOODBYE: u64 = 0xdfd35c5e8327c403;
index 9b979669b3215e9fe5c2008bd14f56d8320d65d1..6293344a07309c0594d762934f5c4ea03da222e2 100644 (file)
@@ -124,7 +124,7 @@ impl MatchPattern {
         Ok(Some((match_pattern, content_buffer, stat)))
     }
 
-    /// Interprete a byte buffer as a sinlge line containing a valid
+    /// Interpret a byte buffer as a sinlge line containing a valid
     /// `MatchPattern`.
     /// Pattern starting with `#` are interpreted as comments, returning `Ok(None)`.
     /// Pattern starting with '!' are interpreted as negative match pattern.
index 8ae31cb7ce6a719529322308f35379ed6f8d0af7..cfddf8ab06019d4b1eea82f96423e25106530ccd 100644 (file)
@@ -84,7 +84,7 @@ impl<R: Read> SequentialDecoder<R> {
 
     pub(crate) fn read_link(&mut self, size: u64) -> Result<PathBuf, Error> {
         if size < (HEADER_SIZE + 2) {
-            bail!("dectected short link target.");
+            bail!("detected short link target.");
         }
         let target_len = size - HEADER_SIZE;
 
@@ -104,7 +104,7 @@ impl<R: Read> SequentialDecoder<R> {
 
     pub(crate) fn read_hardlink(&mut self, size: u64) -> Result<(PathBuf, u64), Error> {
         if size < (HEADER_SIZE + 8 + 2) {
-            bail!("dectected short hardlink header.");
+            bail!("detected short hardlink header.");
         }
         let offset: u64 = self.read_item()?;
         let target = self.read_link(size - 8)?;
@@ -121,7 +121,7 @@ impl<R: Read> SequentialDecoder<R> {
 
     pub(crate) fn read_filename(&mut self, size: u64) -> Result<OsString, Error> {
         if size < (HEADER_SIZE + 2) {
-            bail!("dectected short filename");
+            bail!("detected short filename");
         }
         let name_len = size - HEADER_SIZE;
 
index eb47890697879798584d243d08e0c6a868d666ff..f0ee9b641b2f54d40ff37d1c0cd428db7420e788 100644 (file)
@@ -277,7 +277,7 @@ fn update_active_workers(new_upid: Option<&UPID>) -> Result<Vec<TaskListInfo>, E
                     } else {
                         match state {
                             None => {
-                                println!("Detected stoped UPID {}", upid_str);
+                                println!("Detected stopped UPID {}", upid_str);
                                 let status = upid_read_status(&upid)
                                     .unwrap_or_else(|_| String::from("unknown"));
                                 finish_list.push(TaskListInfo {
index 2fedd848f6890109f69515fbfd4deb922846d773..59fee2a709a5b4604af9ab08c01611a08f5c52f5 100644 (file)
@@ -127,7 +127,7 @@ pub fn lock_file<F: AsRawFd>(
 }
 
 /// Open or create a lock file (append mode). Then try to
-/// aquire a lock using `lock_file()`.
+/// acquire a lock using `lock_file()`.
 pub fn open_file_locked<P: AsRef<Path>>(path: P, timeout: Duration) -> Result<File, Error> {
     let path = path.as_ref();
     let mut file = match OpenOptions::new().create(true).append(true).open(path) {
@@ -136,7 +136,7 @@ pub fn open_file_locked<P: AsRef<Path>>(path: P, timeout: Duration) -> Result<Fi
     };
     match lock_file(&mut file, true, Some(timeout)) {
         Ok(_) => Ok(file),
-        Err(err) => bail!("Unable to aquire lock {:?} - {}", path, err),
+        Err(err) => bail!("Unable to acquire lock {:?} - {}", path, err),
     }
 }
 
@@ -441,7 +441,7 @@ pub fn join(data: &Vec<String>, sep: char) -> String {
 
 /// Detect modified configuration files
 ///
-/// This function fails with a resonable error message if checksums do not match.
+/// This function fails with a reasonable error message if checksums do not match.
 pub fn detect_modified_configuration_file(digest1: &[u8;32], digest2: &[u8;32]) -> Result<(), Error> {
     if digest1 != digest2 {
        bail!("detected modified configuration - file changed by other user? Try again.");
index da627d010ffef606889f1a07a5fc8ab9135d11ea..1c82bdc382ff4c7f9d30ce8c5652aadbf88d9a50 100644 (file)
@@ -149,14 +149,14 @@ fn test_broadcast_future() {
         .map_ok(|res| {
             CHECKSUM.fetch_add(res, Ordering::SeqCst);
         })
-        .map_err(|err| { panic!("got errror {}", err); })
+        .map_err(|err| { panic!("got error {}", err); })
         .map(|_| ());
 
     let receiver2 = sender.listen()
         .map_ok(|res| {
             CHECKSUM.fetch_add(res*2, Ordering::SeqCst);
         })
-        .map_err(|err| { panic!("got errror {}", err); })
+        .map_err(|err| { panic!("got error {}", err); })
         .map(|_| ());
 
     let mut rt = tokio::runtime::Runtime::new().unwrap();
index c2c5aab7e792416e44345871304f6cf00518873d..426e7b8de4a2fbe78a0f547134c82a1de80ac71d 100644 (file)
@@ -4,7 +4,7 @@ use std::io::Write;
 
 /// Log messages with timestamps into files
 ///
-/// Logs messages to file, and optionaly to standart output.
+/// Logs messages to file, and optionally to standard output.
 ///
 ///
 /// #### Example:
index 0f7e35ed8f39aa061775f9621972b717b30694ed..894fdf3e393d078369c90044d6b1f24fc6a0bbfb 100644 (file)
@@ -107,7 +107,7 @@ pub fn read_subdir<P: ?Sized + nix::NixPath>(dirfd: RawFd, path: &P) -> nix::Res
 }
 
 /// Scan through a directory with a regular expression. This is simply a shortcut filtering the
-/// results of `read_subdir`. Non-UTF8 comaptible file names are silently ignored.
+/// results of `read_subdir`. Non-UTF8 compatible file names are silently ignored.
 pub fn scan_subdir<'a, P: ?Sized + nix::NixPath>(
     dirfd: RawFd,
     path: &P,
index 7a73cebe474d479a969f8d47b8989d783556d964..56f8c514f47548a09b3c891786872db754bac2be 100644 (file)
@@ -1,6 +1,6 @@
 //! Inter-process reader-writer lock builder.
 //!
-//! This implemenation uses fcntl record locks with non-blocking
+//! This implementation uses fcntl record locks with non-blocking
 //! F_SETLK command (never blocks).
 //!
 //! We maintain a map of shared locks with time stamps, so you can get
@@ -127,9 +127,9 @@ impl ProcessLocker {
         Ok(())
     }
 
-    /// Try to aquire a shared lock
+    /// Try to acquire a shared lock
     ///
-    /// On sucess, this makes sure that no other process can get an exclusive lock for the file.
+    /// On success, this makes sure that no other process can get an exclusive lock for the file.
     pub fn try_shared_lock(locker: Arc<Mutex<Self>>) -> Result<ProcessLockSharedGuard, Error> {
 
         let mut data = locker.lock().unwrap();
@@ -168,7 +168,7 @@ impl ProcessLocker {
         result
     }
 
-    /// Try to aquire a exclusive lock
+    /// Try to acquire a exclusive lock
     ///
     /// Make sure the we are the only process which has locks for this file (shared or exclusive).
     pub fn try_exclusive_lock(locker: Arc<Mutex<Self>>) -> Result<ProcessLockExclusiveGuard, Error> {
index b36584962c70f606a772d0cf6dda24f5e03ffdf2..17476e980b6a4d9ef4ccea663b7da7f3a4b61623 100644 (file)
@@ -1,4 +1,4 @@
-//! Generate and verify Authentification tickets
+//! Generate and verify Authentication tickets
 
 use anyhow::{bail, Error};
 use base64;
index 8099c99c408533b5b6605f19cd816d1e2d1a0e1c..2be03842f7909492683bcecdc408b06f31b54829 100644 (file)
@@ -77,7 +77,7 @@ Ext.define('PBS.DataStoreContent', {
                } else if (btype === 'host') {
                    cls = 'fa-building';
                } else {
-                   console.warn(`got unkown backup-type '${btype}'`);
+                   console.warn(`got unknown backup-type '${btype}'`);
                    continue; // FIXME: auto render? what do?
                }