Description: move files to applayer 
 loongker-ce (5:20.10.3-23) buster; urgency=low
   * Version: 20.10.3-23
   * move files to applayer 
Author: wanghuaiqing <wanghuaiqing@loongson.com>

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2022-10-08

--- lcf-utils-1.0.1/src/loongker-ce-20.10.3.orig/VERSION
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/VERSION
@@ -1 +1 @@
-20.10.3-22
+20.10.3-23
--- /dev/null
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/applayer/appcompose.go
@@ -0,0 +1,33 @@
+package applayer
+
+import (
+	"context"
+
+	"github.com/docker/cli/cli"
+	"github.com/docker/cli/cli/command"
+	"github.com/spf13/cobra"
+)
+
+
+func NewAppComposeCommand(dockerCli command.Cli) *cobra.Command {
+
+	cmd := &cobra.Command{
+		Use:   "appcompose",
+		Short: "try to compose all images and all applayers",
+		Args:  cli.ExactArgs(0),
+		RunE: func(cmd *cobra.Command, args []string) error {
+			return runAppcompose(dockerCli)
+		},
+	}
+
+	flags := cmd.Flags()
+	flags.SetInterspersed(false)
+
+	return cmd
+}
+
+func runAppcompose(dockerCli command.Cli) error {
+	ctx := context.Background()
+
+	return dockerCli.Client().Appcompose(ctx)
+}
--- /dev/null
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/applayer/applayer_list.go
@@ -0,0 +1,66 @@
+package applayer
+
+import (
+	"context"
+
+	"github.com/docker/cli/cli"
+	"github.com/docker/cli/cli/command"
+	"github.com/docker/cli/cli/command/formatter"
+	"github.com/docker/cli/opts"
+	"github.com/docker/docker/api/types"
+	"github.com/spf13/cobra"
+)
+
+type applayersOptions struct {
+	quiet       bool
+	noTrunc     bool
+	format      string
+	filter      opts.FilterOpt
+}
+
+// NewApplayersCommand creates a new `docker applayers` command
+func NewApplayersCommand(dockerCli command.Cli) *cobra.Command {
+	options := applayersOptions{filter: opts.NewFilterOpt()}
+
+	cmd := &cobra.Command{
+		Use:   "applayers [OPTIONS]",
+		Short: "List applayers",
+		Args:  cli.NoArgs,
+		RunE: func(cmd *cobra.Command, args []string) error {
+			return runApplayers(dockerCli, &options)
+		},
+	}
+
+	flags := cmd.Flags()
+
+	flags.BoolVarP(&options.quiet, "quiet", "q", false, "Only show applayer IDs")
+	flags.BoolVar(&options.noTrunc, "no-trunc", false, "Don't truncate output")
+	flags.StringVar(&options.format, "format", "", "Pretty-print applayers using a Go template")
+	flags.VarP(&options.filter, "filter", "f", "Filter output based on conditions provided")
+
+	return cmd
+}
+
+func runApplayers(dockerCli command.Cli, options *applayersOptions) error {
+	ctx := context.Background()
+
+	filters := options.filter.Value()
+
+	listOptions := types.AppLayerListOptions{
+		Filters: filters,
+	}
+
+	applayers, err := dockerCli.Client().AppLayerList(ctx, listOptions)
+	if err != nil {
+		return err
+	}
+
+	format := formatter.TableFormatKey
+
+	applayerCtx := formatter.Context {
+			Output: dockerCli.Out(),
+			Format: formatter.NewApplayerFormat(format, options.quiet),
+			Trunc:  !options.noTrunc,
+		}
+	return formatter.ApplayerWrite(applayerCtx, applayers)
+}
--- /dev/null
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/applayer/applayer_remove.go
@@ -0,0 +1,46 @@
+package applayer
+
+import (
+	"context"
+	"fmt"
+
+	"github.com/docker/cli/cli"
+	"github.com/docker/cli/cli/command"
+	apiclient "github.com/docker/docker/client"
+	"github.com/spf13/cobra"
+)
+
+func NewRemoveApplayerCommand(dockerCli command.Cli) *cobra.Command {
+
+	cmd := &cobra.Command{
+		Use:   "rma [OPTIONS] AppLayer",
+		Short: "Remove one applayer",
+		Args:  cli.RequiresMinArgs(1),
+		RunE: func(cmd *cobra.Command, arg []string) error {
+			return runRemoveApplayer(dockerCli, arg[0])
+		},
+	}
+
+	return cmd
+}
+
+func runRemoveApplayer(dockerCli command.Cli, applayer string) error {
+	client := dockerCli.Client()
+	ctx := context.Background()
+
+	var fatalErr = false
+	del, err := client.ApplayerRemove(ctx, applayer)
+	if err != nil {
+		if !apiclient.IsErrNotFound(err) {
+			fatalErr = true
+		}
+	} else {
+		fmt.Fprintf(dockerCli.Out(), "Deleted: %s\n", del.ID)
+		return nil
+	}
+	if fatalErr {
+		return err
+	}
+	fmt.Fprintln(dockerCli.Err(), err)
+	return nil
+}
--- /dev/null
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/applayer/genapplayer.go
@@ -0,0 +1,58 @@
+package applayer
+
+import (
+	"io"
+	"context"
+	"github.com/docker/cli/cli"
+	"github.com/docker/cli/cli/command"
+	"github.com/spf13/cobra"
+	"github.com/docker/docker/pkg/jsonmessage"
+)
+
+type genOptions struct {
+	image string
+	name  string
+	quiet bool
+}
+
+// NewTagCommand creates a new `docker gen` command
+func NewGenCommand(dockerCli command.Cli) *cobra.Command {
+	var opts genOptions
+
+	cmd := &cobra.Command{
+		Use:   "gen IMAGE APPLAYERNAME",
+		Short: "gen applayer for the toplayer of the image",
+		Args:  cli.ExactArgs(2),
+		RunE: func(cmd *cobra.Command, args []string) error {
+			opts.image = args[0]
+			opts.name = args[1]
+			return runGen(dockerCli, opts)
+		},
+	}
+
+	flags := cmd.Flags()
+	flags.BoolVarP(&opts.quiet, "quiet", "q", false, "Suppress the gen output")
+
+	return cmd
+}
+
+func runGen(dockerCli command.Cli, opts genOptions) error {
+	ctx := context.Background()
+
+	if !dockerCli.Out().IsTerminal() {
+		opts.quiet = true
+	}
+
+	response, err := dockerCli.Client().ImageGenApplayer(ctx, opts.image, opts.name, opts.quiet)
+	if err != nil {
+		return err
+	}
+	defer response.Body.Close()
+
+	if response.Body != nil && response.JSON {
+		return jsonmessage.DisplayJSONMessagesToStream(response.Body, dockerCli.Out(), nil)
+	}
+
+	_, err = io.Copy(dockerCli.Out(), response.Body)
+	return nil
+}
--- /dev/null
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/applayer/loadapp.go
@@ -0,0 +1,76 @@
+package applayer
+
+import (
+	"context"
+	"io"
+
+	"github.com/docker/cli/cli"
+	"github.com/docker/cli/cli/command"
+	"github.com/docker/docker/pkg/jsonmessage"
+	"github.com/docker/docker/pkg/system"
+	"github.com/pkg/errors"
+	"github.com/spf13/cobra"
+)
+
+type loadAppOptions struct {
+	input string
+	quiet bool
+}
+
+// NewLoadCommand creates a new `docker load` command
+func NewLoadAppCommand(dockerCli command.Cli) *cobra.Command {
+	var opts loadAppOptions
+
+	cmd := &cobra.Command{
+		Use:   "loadapp [OPTIONS]",
+		Short: "Load an applayer from a tar archive or STDIN",
+		Args:  cli.NoArgs,
+		RunE: func(cmd *cobra.Command, args []string) error {
+			return runLoadApp(dockerCli, opts)
+		},
+	}
+
+	flags := cmd.Flags()
+
+	flags.StringVarP(&opts.input, "input", "i", "", "Read from tar archive file, instead of STDIN")
+	flags.BoolVarP(&opts.quiet, "quiet", "q", false, "Suppress the load output")
+
+	return cmd
+}
+
+func runLoadApp(dockerCli command.Cli, opts loadAppOptions) error {
+
+	var input io.Reader = dockerCli.In()
+	if opts.input != "" {
+		// We use system.OpenSequential to use sequential file access on Windows, avoiding
+		// depleting the standby list un-necessarily. On Linux, this equates to a regular os.Open.
+		file, err := system.OpenSequential(opts.input)
+		if err != nil {
+			return err
+		}
+		defer file.Close()
+		input = file
+	}
+
+	// To avoid getting stuck, verify that a tar file is given either in
+	// the input flag or through stdin and if not display an error message and exit.
+	if opts.input == "" && dockerCli.In().IsTerminal() {
+		return errors.Errorf("requested load from stdin, but stdin is empty")
+	}
+
+	if !dockerCli.Out().IsTerminal() {
+		opts.quiet = true
+	}
+	response, err := dockerCli.Client().AppLoad(context.Background(), input, opts.quiet)
+	if err != nil {
+		return err
+	}
+	defer response.Body.Close()
+
+	if response.Body != nil && response.JSON {
+		return jsonmessage.DisplayJSONMessagesToStream(response.Body, dockerCli.Out(), nil)
+	}
+
+	_, err = io.Copy(dockerCli.Out(), response.Body)
+	return err
+}
--- /dev/null
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/applayer/rename.go
@@ -0,0 +1,40 @@
+package applayer
+
+import (
+	"context"
+
+	"github.com/docker/cli/cli"
+	"github.com/docker/cli/cli/command"
+	"github.com/spf13/cobra"
+)
+
+type renameOptions struct {
+	oldName string
+	newName string
+}
+
+func NewApplayerRenameCommand(dockerCli command.Cli) *cobra.Command {
+	var opts renameOptions
+
+	cmd := &cobra.Command{
+		Use:   "applayer-rename applayerid/oldname newname",
+		Short: "rename the name of applayer",
+		Args:  cli.ExactArgs(2),
+		RunE: func(cmd *cobra.Command, args []string) error {
+			opts.oldName = args[0]
+			opts.newName = args[1]
+			return runRename(dockerCli, opts)
+		},
+	}
+
+	flags := cmd.Flags()
+	flags.SetInterspersed(false)
+
+	return cmd
+}
+
+func runRename(dockerCli command.Cli, opts renameOptions) error {
+	ctx := context.Background()
+
+	return dockerCli.Client().ApplayerRename(ctx, opts.oldName, opts.newName)
+}
--- /dev/null
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/applayer/saveapp.go
@@ -0,0 +1,84 @@
+package applayer
+
+import (
+	"context"
+	"io"
+	"strings"
+
+	"github.com/docker/cli/cli"
+	"github.com/docker/cli/cli/command"
+	"github.com/pkg/errors"
+	"github.com/spf13/cobra"
+)
+
+type saveAppOptions struct {
+	output string
+	applayer string
+	compress string
+}
+
+// NewSaveAppCommand creates a new `docker saveapp` command
+func NewSaveAppCommand(dockerCli command.Cli) *cobra.Command {
+	var opts saveAppOptions
+
+	cmd := &cobra.Command{
+		Use:   "saveapp [OPTIONS] applayer",
+		Short: "Save one applayer to a tar archive (streamed to STDOUT by default)",
+		Args:  cli.NoArgs,
+		RunE: func(cmd *cobra.Command, args []string) error {
+			return RunSaveApp(dockerCli, opts)
+		},
+	}
+
+	flags := cmd.Flags()
+
+	flags.StringVarP(&opts.output, "output", "o", "", "Write to a file, instead of STDOUT")
+	flags.StringVarP(&opts.applayer, "applayer", "a", "", "applayerid or applayername to save")
+	flags.StringVarP(&opts.compress, "compress", "c", "uncompressed", "specify a compress method, gzip")
+
+	return cmd
+}
+
+// RunSave performs a save against the engine based on the specified options
+func RunSaveApp(dockerCli command.Cli, opts saveAppOptions) error {
+	if opts.output == "" && dockerCli.Out().IsTerminal() {
+		return errors.New("cowardly refusing to save to a terminal. Use the -o flag or redirect")
+	}
+
+	if opts.applayer == "" {
+		return errors.New("please specify id or name of a applayer")
+	}
+
+	if err := command.ValidateOutputPath(opts.output); err != nil {
+		return errors.Wrap(err, "failed to save applayer")
+	}
+	var a = strings.ToLower(opts.compress)
+	if err := validateCompressAlgo(a); err !=nil {
+		return err
+	}
+
+	responseBody, err := dockerCli.Client().AppSave(context.Background(), opts.applayer, a)
+	if err != nil {
+		return err
+	}
+	defer responseBody.Close()
+
+	if opts.output == "" {
+		_, err := io.Copy(dockerCli.Out(), responseBody)
+		return err
+	}
+
+	return command.CopyToFile(opts.output, responseBody)
+}
+
+func validateCompressAlgo(algo string) error {
+        switch algo {
+        case "uncompressed":
+        case "gzip":
+        case "xz": fallthrough
+        case "bzip2": fallthrough
+        default:
+                return errors.New("unsupported compress algo")
+        }
+        return nil
+}
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3.orig/sources/cli/cli/command/commands/commands.go
+++ lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/commands/commands.go
@@ -22,6 +22,7 @@ import (
 	"github.com/docker/cli/cli/command/system"
 	"github.com/docker/cli/cli/command/trust"
 	"github.com/docker/cli/cli/command/volume"
+	"github.com/docker/cli/cli/command/applayer"
 	"github.com/spf13/cobra"
 )
 
@@ -115,7 +116,6 @@ func AddCommands(cmd *cobra.Command, doc
 		hide(container.NewWaitCommand(dockerCli)),
 		hide(image.NewHistoryCommand(dockerCli)),
 		hide(image.NewImagesCommand(dockerCli)),
-		hide(image.NewApplayersCommand(dockerCli)),
 		hide(image.NewImportCommand(dockerCli)),
 		hide(image.NewLoadCommand(dockerCli)),
 		hide(image.NewPullCommand(dockerCli)),
@@ -125,13 +125,13 @@ func AddCommands(cmd *cobra.Command, doc
 		hide(image.NewTagCommand(dockerCli)),
 		hide(image.NewLoadUpgradeCommand(dockerCli)),
 		hide(image.NewSaveUpgradeCommand(dockerCli)),
-		hide(image.NewGenCommand(dockerCli)),
-		hide(image.NewRemoveApplayerCommand(dockerCli)),
-		hide(image.NewRemoveApplayerCommand(dockerCli)),
-		hide(image.NewAppComposeCommand(dockerCli)),
-		hide(image.NewLoadAppCommand(dockerCli)),
-		hide(image.NewSaveAppCommand(dockerCli)),
-		hide(image.NewApplayerRenameCommand(dockerCli)),
+		hide(applayer.NewGenCommand(dockerCli)),
+		hide(applayer.NewRemoveApplayerCommand(dockerCli)),
+		hide(applayer.NewAppComposeCommand(dockerCli)),
+		hide(applayer.NewLoadAppCommand(dockerCli)),
+		hide(applayer.NewSaveAppCommand(dockerCli)),
+		hide(applayer.NewApplayerRenameCommand(dockerCli)),
+		hide(applayer.NewApplayersCommand(dockerCli)),
 	)
 }
 
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/image/appcompose.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package image
-
-import (
-	"context"
-
-	"github.com/docker/cli/cli"
-	"github.com/docker/cli/cli/command"
-	"github.com/spf13/cobra"
-)
-
-
-func NewAppComposeCommand(dockerCli command.Cli) *cobra.Command {
-
-	cmd := &cobra.Command{
-		Use:   "appcompose",
-		Short: "try to compose all images and all applayers",
-		Args:  cli.ExactArgs(0),
-		RunE: func(cmd *cobra.Command, args []string) error {
-			return runAppcompose(dockerCli)
-		},
-	}
-
-	flags := cmd.Flags()
-	flags.SetInterspersed(false)
-
-	return cmd
-}
-
-func runAppcompose(dockerCli command.Cli) error {
-	ctx := context.Background()
-
-	return dockerCli.Client().Appcompose(ctx)
-}
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/image/applayer_list.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package image
-
-import (
-	"context"
-
-	"github.com/docker/cli/cli"
-	"github.com/docker/cli/cli/command"
-	"github.com/docker/cli/cli/command/formatter"
-	"github.com/docker/cli/opts"
-	"github.com/docker/docker/api/types"
-	"github.com/spf13/cobra"
-)
-
-type applayersOptions struct {
-	quiet       bool
-	noTrunc     bool
-	format      string
-	filter      opts.FilterOpt
-}
-
-// NewApplayersCommand creates a new `docker applayers` command
-func NewApplayersCommand(dockerCli command.Cli) *cobra.Command {
-	options := applayersOptions{filter: opts.NewFilterOpt()}
-
-	cmd := &cobra.Command{
-		Use:   "applayers [OPTIONS]",
-		Short: "List applayers",
-		Args:  cli.NoArgs,
-		RunE: func(cmd *cobra.Command, args []string) error {
-			return runApplayers(dockerCli, &options)
-		},
-	}
-
-	flags := cmd.Flags()
-
-	flags.BoolVarP(&options.quiet, "quiet", "q", false, "Only show applayer IDs")
-	flags.BoolVar(&options.noTrunc, "no-trunc", false, "Don't truncate output")
-	flags.StringVar(&options.format, "format", "", "Pretty-print applayers using a Go template")
-	flags.VarP(&options.filter, "filter", "f", "Filter output based on conditions provided")
-
-	return cmd
-}
-
-func runApplayers(dockerCli command.Cli, options *applayersOptions) error {
-	ctx := context.Background()
-
-	filters := options.filter.Value()
-
-	listOptions := types.AppLayerListOptions{
-		Filters: filters,
-	}
-
-	applayers, err := dockerCli.Client().AppLayerList(ctx, listOptions)
-	if err != nil {
-		return err
-	}
-
-	format := formatter.TableFormatKey
-
-	applayerCtx := formatter.Context {
-			Output: dockerCli.Out(),
-			Format: formatter.NewApplayerFormat(format, options.quiet),
-			Trunc:  !options.noTrunc,
-		}
-	return formatter.ApplayerWrite(applayerCtx, applayers)
-}
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/image/applayer_remove.go
+++ /dev/null
@@ -1,46 +0,0 @@
-package image
-
-import (
-	"context"
-	"fmt"
-
-	"github.com/docker/cli/cli"
-	"github.com/docker/cli/cli/command"
-	apiclient "github.com/docker/docker/client"
-	"github.com/spf13/cobra"
-)
-
-func NewRemoveApplayerCommand(dockerCli command.Cli) *cobra.Command {
-
-	cmd := &cobra.Command{
-		Use:   "rma [OPTIONS] AppLayer",
-		Short: "Remove one applayer",
-		Args:  cli.RequiresMinArgs(1),
-		RunE: func(cmd *cobra.Command, arg []string) error {
-			return runRemoveApplayer(dockerCli, arg[0])
-		},
-	}
-
-	return cmd
-}
-
-func runRemoveApplayer(dockerCli command.Cli, applayer string) error {
-	client := dockerCli.Client()
-	ctx := context.Background()
-
-	var fatalErr = false
-	del, err := client.ApplayerRemove(ctx, applayer)
-	if err != nil {
-		if !apiclient.IsErrNotFound(err) {
-			fatalErr = true
-		}
-	} else {
-		fmt.Fprintf(dockerCli.Out(), "Deleted: %s\n", del.ID)
-		return nil
-	}
-	if fatalErr {
-		return err
-	}
-	fmt.Fprintln(dockerCli.Err(), err)
-	return nil
-}
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/image/genapplayer.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package image
-
-import (
-	"io"
-	"context"
-	"github.com/docker/cli/cli"
-	"github.com/docker/cli/cli/command"
-	"github.com/spf13/cobra"
-	"github.com/docker/docker/pkg/jsonmessage"
-)
-
-type genOptions struct {
-	image string
-	name  string
-	quiet bool
-}
-
-// NewTagCommand creates a new `docker gen` command
-func NewGenCommand(dockerCli command.Cli) *cobra.Command {
-	var opts genOptions
-
-	cmd := &cobra.Command{
-		Use:   "gen IMAGE APPLAYERNAME",
-		Short: "gen applayer for the toplayer of the image",
-		Args:  cli.ExactArgs(2),
-		RunE: func(cmd *cobra.Command, args []string) error {
-			opts.image = args[0]
-			opts.name = args[1]
-			return runGen(dockerCli, opts)
-		},
-	}
-
-	flags := cmd.Flags()
-	flags.BoolVarP(&opts.quiet, "quiet", "q", false, "Suppress the gen output")
-
-	return cmd
-}
-
-func runGen(dockerCli command.Cli, opts genOptions) error {
-	ctx := context.Background()
-
-	if !dockerCli.Out().IsTerminal() {
-		opts.quiet = true
-	}
-
-	response, err := dockerCli.Client().ImageGenApplayer(ctx, opts.image, opts.name, opts.quiet)
-	if err != nil {
-		return err
-	}
-	defer response.Body.Close()
-
-	if response.Body != nil && response.JSON {
-		return jsonmessage.DisplayJSONMessagesToStream(response.Body, dockerCli.Out(), nil)
-	}
-
-	_, err = io.Copy(dockerCli.Out(), response.Body)
-	return nil
-}
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/image/loadapp.go
+++ /dev/null
@@ -1,76 +0,0 @@
-package image
-
-import (
-	"context"
-	"io"
-
-	"github.com/docker/cli/cli"
-	"github.com/docker/cli/cli/command"
-	"github.com/docker/docker/pkg/jsonmessage"
-	"github.com/docker/docker/pkg/system"
-	"github.com/pkg/errors"
-	"github.com/spf13/cobra"
-)
-
-type loadAppOptions struct {
-	input string
-	quiet bool
-}
-
-// NewLoadCommand creates a new `docker load` command
-func NewLoadAppCommand(dockerCli command.Cli) *cobra.Command {
-	var opts loadAppOptions
-
-	cmd := &cobra.Command{
-		Use:   "loadapp [OPTIONS]",
-		Short: "Load an applayer from a tar archive or STDIN",
-		Args:  cli.NoArgs,
-		RunE: func(cmd *cobra.Command, args []string) error {
-			return runLoadApp(dockerCli, opts)
-		},
-	}
-
-	flags := cmd.Flags()
-
-	flags.StringVarP(&opts.input, "input", "i", "", "Read from tar archive file, instead of STDIN")
-	flags.BoolVarP(&opts.quiet, "quiet", "q", false, "Suppress the load output")
-
-	return cmd
-}
-
-func runLoadApp(dockerCli command.Cli, opts loadAppOptions) error {
-
-	var input io.Reader = dockerCli.In()
-	if opts.input != "" {
-		// We use system.OpenSequential to use sequential file access on Windows, avoiding
-		// depleting the standby list un-necessarily. On Linux, this equates to a regular os.Open.
-		file, err := system.OpenSequential(opts.input)
-		if err != nil {
-			return err
-		}
-		defer file.Close()
-		input = file
-	}
-
-	// To avoid getting stuck, verify that a tar file is given either in
-	// the input flag or through stdin and if not display an error message and exit.
-	if opts.input == "" && dockerCli.In().IsTerminal() {
-		return errors.Errorf("requested load from stdin, but stdin is empty")
-	}
-
-	if !dockerCli.Out().IsTerminal() {
-		opts.quiet = true
-	}
-	response, err := dockerCli.Client().AppLoad(context.Background(), input, opts.quiet)
-	if err != nil {
-		return err
-	}
-	defer response.Body.Close()
-
-	if response.Body != nil && response.JSON {
-		return jsonmessage.DisplayJSONMessagesToStream(response.Body, dockerCli.Out(), nil)
-	}
-
-	_, err = io.Copy(dockerCli.Out(), response.Body)
-	return err
-}
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/image/rename.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package image
-
-import (
-	"context"
-
-	"github.com/docker/cli/cli"
-	"github.com/docker/cli/cli/command"
-	"github.com/spf13/cobra"
-)
-
-type renameOptions struct {
-	oldName string
-	newName string
-}
-
-func NewApplayerRenameCommand(dockerCli command.Cli) *cobra.Command {
-	var opts renameOptions
-
-	cmd := &cobra.Command{
-		Use:   "applayer-rename applayerid/oldname newname",
-		Short: "rename the name of applayer",
-		Args:  cli.ExactArgs(2),
-		RunE: func(cmd *cobra.Command, args []string) error {
-			opts.oldName = args[0]
-			opts.newName = args[1]
-			return runRename(dockerCli, opts)
-		},
-	}
-
-	flags := cmd.Flags()
-	flags.SetInterspersed(false)
-
-	return cmd
-}
-
-func runRename(dockerCli command.Cli, opts renameOptions) error {
-	ctx := context.Background()
-
-	return dockerCli.Client().ApplayerRename(ctx, opts.oldName, opts.newName)
-}
--- lcf-utils-1.0.1/src/loongker-ce-20.10.3/sources/cli/cli/command/image/saveapp.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package image
-
-import (
-	"context"
-	"io"
-	"strings"
-
-	"github.com/docker/cli/cli"
-	"github.com/docker/cli/cli/command"
-	"github.com/pkg/errors"
-	"github.com/spf13/cobra"
-)
-
-type saveAppOptions struct {
-	output string
-	applayer string
-	compress string
-}
-
-// NewSaveAppCommand creates a new `docker saveapp` command
-func NewSaveAppCommand(dockerCli command.Cli) *cobra.Command {
-	var opts saveAppOptions
-
-	cmd := &cobra.Command{
-		Use:   "saveapp [OPTIONS] applayer",
-		Short: "Save one applayer to a tar archive (streamed to STDOUT by default)",
-		Args:  cli.NoArgs,
-		RunE: func(cmd *cobra.Command, args []string) error {
-			return RunSaveApp(dockerCli, opts)
-		},
-	}
-
-	flags := cmd.Flags()
-
-	flags.StringVarP(&opts.output, "output", "o", "", "Write to a file, instead of STDOUT")
-	flags.StringVarP(&opts.applayer, "applayer", "a", "", "applayerid or applayername to save")
-	flags.StringVarP(&opts.compress, "compress", "c", "uncompressed", "specify a compress method, gzip")
-
-	return cmd
-}
-
-// RunSave performs a save against the engine based on the specified options
-func RunSaveApp(dockerCli command.Cli, opts saveAppOptions) error {
-	if opts.output == "" && dockerCli.Out().IsTerminal() {
-		return errors.New("cowardly refusing to save to a terminal. Use the -o flag or redirect")
-	}
-
-	if opts.applayer == "" {
-		return errors.New("please specify id or name of a applayer")
-	}
-
-	if err := command.ValidateOutputPath(opts.output); err != nil {
-		return errors.Wrap(err, "failed to save applayer")
-	}
-	var a = strings.ToLower(opts.compress)
-	if err := validateCompressAlgo(a); err !=nil {
-		return err
-	}
-
-	responseBody, err := dockerCli.Client().AppSave(context.Background(), opts.applayer, a)
-	if err != nil {
-		return err
-	}
-	defer responseBody.Close()
-
-	if opts.output == "" {
-		_, err := io.Copy(dockerCli.Out(), responseBody)
-		return err
-	}
-
-	return command.CopyToFile(opts.output, responseBody)
-}
