Add a function to delete all nodes with a specific name.
authorkettenis <kettenis@openbsd.org>
Thu, 12 Jul 2018 14:46:45 +0000 (14:46 +0000)
committerkettenis <kettenis@openbsd.org>
Thu, 12 Jul 2018 14:46:45 +0000 (14:46 +0000)
Add a function to determine the size of a machine description.

usr.sbin/ldomctl/mdesc.c
usr.sbin/ldomctl/mdesc.h

index babdd82..cb6a044 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mdesc.c,v 1.9 2015/05/23 14:26:06 jsg Exp $   */
+/*     $OpenBSD: mdesc.c,v 1.10 2018/07/12 14:46:45 kettenis Exp $     */
 
 /*
  * Copyright (c) 2012 Mark Kettenis
@@ -315,6 +315,15 @@ md_find_delete_node(struct md *md, const char *name)
                md_delete_node(md, node);
 }
 
+void
+md_find_delete_nodes(struct md *md, const char *name)
+{
+       struct md_node *node;
+
+       while ((node = md_find_node(md, name)))
+               md_delete_node(md, node);
+}
+
 struct md *
 md_alloc(void)
 {
@@ -649,3 +658,20 @@ md_write(struct md *md, const char *path)
 
        fclose(fp);
 }
+
+uint32_t
+md_size(const char *path)
+{
+       uint32_t size;
+       FILE *fp;
+
+       fp = fopen(path, "r");
+       if (fp == NULL)
+               err(1, "fopen");
+
+       fseek(fp, 0, SEEK_END);
+       size = ftell(fp);
+       fclose(fp);
+
+       return size;
+}
index 4e509b7..ec78d95 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mdesc.h,v 1.5 2012/11/26 20:08:16 kettenis Exp $      */
+/*     $OpenBSD: mdesc.h,v 1.6 2018/07/12 14:46:45 kettenis Exp $      */
 
 /*
  * Copyright (c) 2012 Mark Kettenis
@@ -125,6 +125,7 @@ bool md_get_prop_data(struct md *, struct md_node *, const char *,
 
 void md_delete_node(struct md *, struct md_node *);
 void md_find_delete_node(struct md *, const char *);
+void md_find_delete_nodes(struct md *, const char *);
 
 void md_collect_garbage(struct md *);
 
@@ -135,3 +136,4 @@ struct md *md_copy(struct md *);
 
 struct md *md_read(const char *);
 void md_write(struct md *, const char *);
+uint32_t md_size(const char *);